Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根记录器忽略记录器级别_Python_Logging - Fatal编程技术网

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先生!我确实读过一些关于这方面的东西,但我不太明白,所以就这样!也可以将其作为答案发布!不客气,因为你的答案已经提到了解决方案,所以真的没有必要再提一个:-这太令人困惑了。