假设我有以下代码:
import logging
import logging.handlers
a = logging.getLogger('myapp')
h = logging.handlers.RotatingFileHandler('foo.log')
h.setLevel(logging.DEBUG)
a.addHandler(h)
# The effective log level is still logging.WARN
print a.getEffectiveLevel()
a.debug('foo message')
a.warn('warning message')
Run Code Online (Sandbox Code Playgroud)
我希望logging.DEBUG处理程序上的设置会导致调试级别的消息写入日志文件.但是,这将打印30作为有效级别(等于logging.WARNING,默认值),并仅将warn消息记录到日志文件,而不是调试消息.
似乎处理程序的日志级别被丢弃在地板上,例如它被默默地忽略.这让我想知道,为什么要setLevel处理器呢?
我确定这是一个简单的修复,但我想在运行单元测试时在PyCharm控制台中查看日志消息.我正在测试的模块有自己的记录器,通常我会设置一个根记录器来捕获某个级别的调试消息,并将其他日志传递给一个文件.但我无法弄清楚它如何与单元测试一起工作.
我正在使用unittest2模块,并使用PyCharm的自动测试发现(可能是基于鼻子,但我不知道).
我试过愚弄运行配置,但似乎没有一种简单的方法来做到这一点.
如果你们中的任何人在那里工作,那么PyCharm文档在这里也没有特别的帮助.
在编辑中:它似乎表明控制台捕获了关键级别的日志消息.我想知道是否有办法配置它来捕获调试级别的消息.
这篇文章(Pycharm单元测试交互式调试命令行不起作用)建议将-s选项添加到构建配置,这不会产生所需的结果.