根记录器忽略记录器级别

Jer*_*meJ 3 python logging

根记录器在(我认为)应该记录时不会记录:

import logging

# NOTE: I make sure to set the root logger level to logging.DEBUG
logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)

logging.debug('This is a debugging test.')
Run Code Online (Sandbox Code Playgroud)

根据我的理解,这应该记录一些东西,但它什么也没做。快速谷歌搜索并没有帮助我解决这个问题,官方文档也没有帮助我解决这个问题也没有帮助我解决这个问题。

另一方面,如果我使用logging.warning而不是logging.debug,它确实有效。

我究竟做错了什么?

编辑:

检查当前级别logging.getLogger().getEffectiveLevel()表明我的级别仍处于30,就像在调用之前一样logging.basicConfig

有效检查logging.getLogger().isEnabledFor(logging.DEBUG)告诉我根记录器级别未启用logging.DEBUG

Jer*_*meJ 5

编辑:原来OP(我)的麻烦是由于logging.debug之前已经打电话过logging.basicConfig,因此将配置设置为默认值并且调用logging.basicConfig被忽略,正如 @SmCaterpillar 指出的那样。

\n\n

虽然basicConfig,这种替代解决方案允许您在设置后“强制”根记录器级别,但仍然有用!

\n\n
\n\n

找到了一个“解决方案”:

\n\n
# [\xe2\x80\xa6] Previous code\n\n# Sets the root logger level\nlogging.getLogger().setLevel(logging.DEBUG)\n\nlogging.debug(\'Test\')  # Displays \'DEBUG:root:Test\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

但它不执行我给出的格式logging.basicConfig

\n\n

这就是说我已经很满意了:这已经是某种进步了。即使不完全符合我期望的格式,记录也总是比不记录要好。

\n