Ich möchte StreamHandler Logging-Handler von Python verwenden. Was ich versucht habe, ist,Python: logging.streamhandler sendet keine Protokolle an stdout
import logging
import sys
mylogger = logging.getLogger("mylogger")
h1 = logging.StreamHandler(stream=sys.stdout)
h1.setLevel(logging.DEBUG)
mylogger.addHandler(h1)
# now trying to log with the created logger
mylogger.debug("abcd") # <no output>
mylogger.info("abcd") # <no output>
mylogger.warn("abcd") # abcd
ich etwas fehle? Oder etwas falsch machen? Warum INFO und DEBUG-Level-Logs nicht auf STDOUT kommen?
ich einige grundlegende Dokumente, http folgenden wurde: //docs.python. org/2/howto/logging.html # logging-advanced-tutorial Doc sagt setLevel on handler. Ist dieses Dokument falsch? –
Nein, es ist nicht falsch, wie Sie in http://docs.python.org/2/howto/logging.html#logging-flow sehen können, übergibt der Logger den Protokollierungsaufruf an seinen Handler, nachdem er den Level überprüft hat. Wenn also der Pegel des Loggers auf "WARN" gesetzt ist und eine "DEBUG" -Nachricht ankommt, wird nichts durchgereicht. Wenn eine Nachricht übergeben wird, übergibt der Logger sie an den Handler, der ebenfalls über einen Protokollierungstyp "Filter" verfügt. – tamasgal
Warum muss ich den Logger-Level einstellen, wenn ich den Level des Handlers eingestellt habe? Warum zweimal einstellen? das scheint überflüssig zu sein. – ospider