Determining if root logger is set to DEBUG level in Python?
If I set the logging module to DEBUG with a command 开发者_运维技巧line parameter like this:
if (opt["log"] == "debug"):
logging.basicConfig(level=logging.DEBUG)
How can I later tell if the logger was set to DEBUG? I'm writing a decorator that will time a function if True flag is passed to it, and if no flag is given, it defaults to printing timing information when the root logger is set to DEBUG.
Actually, there's one better: use the code logging.getLogger().isEnabledFor(logging.DEBUG)
. I found it while trying to understand what to do with the result of getEffectiveLevel()
.
Below is the code that the logging module itself uses.
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()
logging.getLogger().getEffectiveLevel()
logging.getLogger()
without arguments gets the root level logger.
http://docs.python.org/library/logging.html#logging.Logger.getEffectiveLevel
Just
logging.getLogger().level == logging.DEBUG
精彩评论