Python 根记录器忽略记录器级别
根记录器在我认为应该时不记录:Python 根记录器忽略记录器级别,python,logging,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.') 据我所知,这应该记录一些东西,但它什么也没做。 快速的谷歌搜
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.')
据我所知,这应该记录一些东西,但它什么也没做。
快速的谷歌搜索并没有帮助我解决这个问题,谷歌搜索也没有
另一方面,如果我使用logging.warning而不是logging.debug,它确实可以工作
我做错了什么
编辑:
使用logging.getLogger.getEffectiveLevel检查当前级别表明该级别仍然为30,就像调用logging.basicConfig之前一样
检查logging.getLogger.isEnabledForlogging.DEBUG有效地告诉我,根日志记录器级别没有为logging.DEBUG启用。编辑:原来OP的me问题是因为在logging.basicConfig之前已经调用logging.DEBUG,因此,将配置设置为默认值,并忽略对logging.basicConfig的调用,正如@smcatepillar所指出的那样
尽管此替代解决方案允许您在已设置basicConfig后强制根记录器级别,但它仍然很有用
找到了一个解决方案:
# […] Previous code
# Sets the root logger level
logging.getLogger().setLevel(logging.DEBUG)
logging.debug('Test') # Displays 'DEBUG:root:Test'
但是它没有执行我在logging.basicConfig中提供的格式
也就是说,我已经很满意了:这已经是某种进步了。即使不完全按照我所期望的格式进行日志记录,也总比完全不进行日志记录要好。您的代码片段可以正常工作。可能是因为您调用了logging.debug“某些文本”在您的实际代码中已经有其他文本了吗?这会自动配置根记录器,您的基本配置将被忽略。@SmCaterpillar brilliant先生!我确实读过一些关于这方面的东西,但我不太明白,所以就这样!也可以将其作为答案发布!不客气,因为你的答案已经提到了解决方案,所以真的没有必要再提一个:-这太令人困惑了。