为什么我的所有记录器都开始自动禁用?

我是Python及其伐木基础设施的相对新手;
但是,我已经使用Java/C#和Log4J进行了广泛的编程
log4net.我想那可能是我问题的根源:)
我正在尝试每个模块设置一个记录器(因为这大致是
类似于我如何使用log4j/log4net).但是,我注意到了
我的登录器将禁用标志设置为true(更准确地说,1)
当它们初始化时.对于每个记录仪,我必须强迫
禁用= false?为了使它更具体,这就是一个例子.
示例.py:
导入记录
导入logging.config
_log = logging.getLogger(" prediction.predict")
def main():
logging.config.fileconfig('logconfig.conf')
_log.warn("测试警告!")
如果__name__ ==" __ -main __":
主要的()
不幸的是,这不会打印出"测试警告!"如果我把
_log.warn的断点("测试警告!")行,_log.disabled
等于1.如果我更改为:
def main():
logging.config.fileconfig('precention_logconfig.conf')
_log.disabled = false
_log.warn("测试警告!")
有用!所以,我是做错了什么还是我总是必须强迫
我的记录仪可以启用?我应该更新我的配置文件
该记录器以启用启动?这是我的配置文件
(logconfig.conf):
[格式化]
钥匙:详细,简单
[处理者]
钥匙:控制台,filelog
[伐木者]
钥匙:根
[formatter_simple]
格式:%(LevelName)s:%(模块)s.%(funCname)s(%(lineno)d):%
(消息)S
[formatter_detailed]
格式:%(asctime)s%(LevelName)s:%(模块)s.%(funcname)s(%)
(Lineno)D):%(消息)S
[handler_console]
课程:StreamHandler
args:[]
格式:简单
[handler_filelog]
班级:fileHandler
args:[" predictionlog.txt"]
格式:详细
[logger_root]
级别:信息
处理程序:Filleg,Console

# 回答1


乔恩夫罗希里奇(Jonfroehlich)写道:
我认为您必须将记录器放入配置文件中以避免它
FileConfig()将被禁用:
[伐木者]
钥匙:根,预测
#...
[logger_predict]
Qualname:预测
处理者:
彼得
# 回答2


呼叫FileConfig()禁用在此类时存在的任何登录器
称呼.实例化之前,请确保您致电FileConfig()
伐木者;之后,您可以根据自己的意愿实例化,他们
将全部启用.确保您不再次致电FileConfig()
在该呼叫中
被禁用.
fileconfig()禁用现有登录器的原因是
设计为一次性配置(它完全替代了任何
现有配置与配置文件中指定的配置) - 不
作为增量配置器.
此致,
Vinay Sajip

标签: python

添加新评论