Python调试记录器未出现在控制台中

时间:2018-07-23 18:07:26

标签: python python-3.x

这让我发疯,我有以下脚本:

#!/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语句不做任何事情?

1 个答案:

答案 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