2016-07-09 13 views
1
fmtter = logging.Formatter('%(asctime)s,%(msecs)05.1f (%(funcName)s) %(message)s', '%H:%M:%S') 

rock_log = '%s/rock.log' % Build.path 
hdlr = logging.FileHandler(rock_log, mode='w') 
hdlr.setFormatter(fmtter) 
hdlr.setLevel(logging.DEBUG) 

rock_logger = logging.getLogger('rock') 
rock_logger.addHandler(hdlr) 

ich habe die oben LoggerPython-Protokollierung: Protokollierung setLevel() wird nicht erzwungen?

rock_logger.info("hi") doesnt Druck etwas in das Protokoll ABER
rock_logger.error("hi") DOES in das Protokoll

drucke ich denke, es ist etwas mit Niveau zu tun hat, aber ich es speziell auf logging.DEBUG

Wer weiß, was ich falsch mache?

Antwort

2

In Ihrem Fall rock_logger ist der Logger und hdlr ist der Handler. Wenn Sie versuchen, etwas zu protokollieren, überprüft der Logger zunächst, ob er die Nachricht verarbeiten soll (abhängig von der eigenen Protokollstufe). Dann übergibt es die Nachricht an den Handler. Der Handler prüft dann den Level gegen seinen eigenen Log-Level und entscheidet, ob er ihn in die Datei schreibt oder nicht.

Die Protokollierungsstufe rock_logger ist möglicherweise auf Fehler gesetzt. Daher werden die Nachrichten nicht an den Handler übergeben, wenn Sie versuchen, info() oder debug().

rock_logger.setLevel(logging.DEBUG) 

Das sollte das Problem beheben.

+0

yep, dass das Problem behoben! danke – ealeon

+0

wusste nicht, dass Handler-Level die Logger nicht überschreiben – ealeon

Verwandte Themen