【问题标题】:Fabric error No handlers could be found for logger "paramiko.transport"结构错误找不到记录器“paramiko.transport”的处理程序
【发布时间】:2017-01-31 20:44:01
【问题描述】:

我不确定为什么会收到终止连接的错误。我通过 easy_install 从 1.7.5 更新了 paramiko-1.7.6。

我正在尝试设置 Fabric 以将我的 Django 应用程序上传到我的服务器。当我尝试备份现有的应用程序目录时,似乎发生了错误:

def backup_current_install():
  now = datetime.datetime.now()
  cmd="cp -r /home/path/django-projects/app /home/path/django-projects/app%s" % now.strftime("%Y%m%d_%I:%M:%S")
run(cmd)

我已经设置了:

env.hosts  
env.password

在 fabfile 中,我不确定如何导航此处理程序错误。

【问题讨论】:

  • 您能否发布导致程序退出或终止连接的完整异常或警告文本?
  • 我在哪里可以找到这些信息?我复制的 sn-p 就是我所看到的。
  • 当您在脚本中执行run(cmd) 时,您看到的输出是什么?是显示为警告还是错误?
  • 这里描述了“找不到处理程序”的原因:stackoverflow.com/questions/19152578/…
  • 当 env.roledefs 列表中的一台服务器没有响应时,我遇到了这个问题。

标签: python fabric


【解决方案1】:

事实证明,这个错误是因为我没有将 env.password 配置为简单的字符串。

env.userenv.password 都应该是简单的字符串,而不是列表。 Documentation

【讨论】:

    【解决方案2】:

    如果它没有引起问题,您可以放心地忽略此消息。

    在这种情况下,库 (paramiko) 期望应用程序处理日志记录。然而,应用程序程序员可能希望该库没有任何副作用,并正确处理日志记录。

    Configuring Logging for a Library

    【讨论】:

    • 更有可能是相反的方式 - 您的连接被终止,并且 paramiko 正在尝试记录错误。该消息被打印到控制台,但没有引发任何异常。
    • “您可以放心地忽略此消息。”这不一定是真的。输出可能是有意义的,并在您的程序中显示错误。要找出错误消息,您可以在 fabfile 顶部插入import logging; logging.getLogger('paramiko.transport').addHandler(logging.StreamHandler()),它将显示日志消息。
    • @sitaktif:哇,这是不久前的事了。是的,我可能应该详细说明“如果它没有引起问题”。此时的 IIRC paramiko 将在没有处理程序的情况下记录无害的消息,从而触发此日志记录错误。
    【解决方案3】:

    除了前面的答案:

    如果您想在应用程序中找到错误的根本原因,启用由消息指示的日志记录会很有用:

    结构错误找不到记录器“paramiko.transport”的处理程序

    您可以像这样在结构中启用 paramico 的日志记录:

    from fabric.network import ssh
    
    ssh.util.log_to_file("paramiko.log", 10)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-13
      • 2017-10-26
      • 2012-11-11
      • 2011-09-03
      • 2015-04-27
      相关资源
      最近更新 更多