2012-03-29 9 views
1

Das folgende Skript:die Protokollebene Einstellung bewirkt, dass Gewebe mit sich beschweren 'No-Handler könnte für Logger "ssh.transport" zu finden'

#!/usr/bin/env python 
from fabric.api import env, run 
import logging 

logging.getLogger().setLevel(logging.INFO) 

env.host_string = "%[email protected]%s:%s" % ('myuser', 'myhost', '22') 
res = run('date', pty = False) 

erzeugt die folgende Ausgabe:

[[email protected]:22] run: date 
No handlers could be found for logger "ssh.transport" 
[[email protected]:22] out: Thu Mar 29 16:15:15 CEST 2012 

I möchte diese lästige Fehlermeldung loswerden: No handlers could be found for logger "ssh.transport" Das Problem tritt auf, wenn Sie die Protokollstufe (setLevel) einstellen.

Wie kann ich das lösen? Ich muss den Loglevel einstellen, also wird das überspringen nicht helfen.

Antwort

0

Mein Hack ist hässlich, aber funktioniert: Sie könnten etwas mehr wie betrachten

# This is here to avoid the mysterious messages: 'No handlers could be found for logger "ssh.transport"' 

class MyNullHandler(logging.Handler): 
    def emit(self, record): 
     pass 

bugfix_loggers = { } 
def bugfix(name): 
    global bugfix_loggers 
    if not name in bugfix_loggers: 
     # print "Setting dummy logger for '%s'" % (name) 
     logging.getLogger(name).addHandler(MyNullHandler()) 
     bugfix_loggers[name] = True 
2

Sie müssen das Protokollierungssystem initialisieren. Sie können den Fehler machen thusly, indem Sie so in Ihrer App weggehe

import logging 
logging.basicConfig(level=logging.INFO) 

Hinweis: Dies verwendet die Standard-Formatter, die nicht sehr nützlich ist.

import logging 
FORMAT="%(name)s %(funcName)s:%(lineno)d %(message)s" 
logging.basicConfig(format=FORMAT, level=logging.INFO)