这让我发疯,我有以下脚本:
#!/usr/bin/env python3
import logging
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
print(logger.getEffectiveLevel())
print(logger.isEnabledFor(logging.DEBUG))
logger.debug("test") #???
运行时将输出以下内容:
10
True
为什么我的logger.debug
语句不做任何事情?
答案 0 :(得分:1)
因为您没有配置任何处理程序。如果未配置处理程序,则日志事件将消失。如果未配置任何处理程序,则如果看到WARNING或更高级别的事件,但您的事件只是在DEBUG处,则根记录程序会自动添加一个处理程序。
尝试以下方法:
>>> import logging
>>> logger = logging.getLogger() # this is the root logger
>>> logger.handlers
[]
>>> logging.basicConfig(level=logging.DEBUG)
>>> logger.handlers
[<StreamHandler <stderr> (NOTSET)>]
>>> logger.debug('test')
DEBUG:root:test
如果没有另外指定,则基本配置会将StreamHandler
写入sys.stderr
。
在这一点上,我邀请您考虑使用a 3rd-party logging framework,其默认值比stdlib日志记录更合理。
>>> import structlog
>>> logger = structlog.get_logger()
>>> logger.debug("test message", key1='val1', key2='val2')
2018-07-23 13:13.28 test message key1=val1 key2=val2