如果使用以下命令行参数将日志记录模块设置为DEBUG:
if (opt["log"] == "debug"):
logging.basicConfig(level=logging.DEBUG)
以后如何判断记录器是否设置为DEBUG?我正在编写一个装饰器,如果将True标志传递给它,它将为函数计时,如果没有给出标志,则默认情况下,当根记录器设置为DEBUG时,它会打印计时信息。
Answers:
logging.getLogger().getEffectiveLevel()
logging.getLogger()
不带参数的将获取根级别记录器。
http://docs.python.org/library/logging.html#logging.Logger.getEffectiveLevel
logging.getLevelName(logging.getLogger().getEffectiveLevel())
。当您想要的只是当前级别的字符串时,使用更简单的语法会很好。
实际上,有一个更好的方法:使用代码logging.getLogger().isEnabledFor(logging.DEBUG)
。我在尝试了解的结果时发现了它getEffectiveLevel()
。
下面是日志记录模块本身使用的代码。
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()