Wenn ich das Protokollierungsmodul mit einem Befehlszeilenparameter wie folgt auf DEBUG setze:
if (opt["log"] == "debug"):
logging.basicConfig(level=logging.DEBUG)
Wie kann ich später feststellen, ob der Logger auf DEBUG eingestellt ist? Ich schreibe einen Dekorator, der eine Funktion zeitlich festlegt, wenn ein True-Flag an ihn übergeben wird, und wenn kein Flag angegeben ist, werden die Timing-Informationen standardmäßig ausgegeben, wenn der Stammlogger auf DEBUG gesetzt ist.
logging.getLogger().getEffectiveLevel()
logging.getLogger()
ohne Argumente erhält den Logger auf Root-Ebene.
http://docs.python.org/library/logging.html#logging.Logger.getEffectiveLevel
Eigentlich gibt es einen besseren: Verwenden Sie den Code logging.getLogger().isEnabledFor(logging.DEBUG)
. Ich habe es gefunden, als ich versuchte zu verstehen, was mit dem Ergebnis von getEffectiveLevel()
zu tun ist.
Nachfolgend finden Sie den Code, den das Protokollierungsmodul selbst verwendet.
def getEffectiveLevel(self):
"""
Get the effective level for this logger.
Loop through this logger and its parents in the blogger hierarchy,
looking for a non-zero logging level. Return the first one found.
"""
logger = self
while logger:
if logger.level:
return logger.level
logger = logger.parent
return NOTSET
def isEnabledFor(self, level):
"""
Is this logger enabled for level ‘level’?
"""
if self.manager.disable >= level:
return 0
return level >= self.getEffectiveLevel()
Gerade
logging.getLogger().level == logging.DEBUG