在最简单的场景

时间:2016-07-24 16:06:43

标签: python logging

在最简单的情况下,我没有从logging.debug获得任何输出。 (我确实从logger.warn得到了输出。)

import logging
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
logger.warn('Logger is warning')
logger.debug('Logger is debugging')
print(logger.getEffectiveLevel(),
      logger.isEnabledFor(logging.DEBUG),
      file=sys.stderr)

最后一行打印记录器的日志记录级别,显示为logging.DEBUG,以及是否为该级别启用了记录器,这是真的。但是输出显示为log.warn,但不显示log.debug。我错过了什么?

[Python 3.5,OS X 10.11]

1 个答案:

答案 0 :(得分:0)

原因是您尚未指定处理程序。在Python 3.5上,当您没有指定处理程序时使用内部"handler of last resort",但该内部处理程序的级别为WARNING,因此不会显示较低严重性的消息。您需要指定一个处理程序并像这个示例一样添加它:

logger.addHandler(logging.StreamHandler())

在您的代码段中的setLevel语句之前或之后。