我想停止外部模块来填充我的日志文件,就像这个问题一样: Disable logging for a particular package 受答案启发的配置文件如下。我使用python3.2
我的问题是,它不起作用:行' handlers = nullHandler'提出这个:
Traceback (most recent call last):
File "./tree_browser", line 44, in <module>
logging.config.fileConfig('../log/logging.conf')
File "/usr/lib/python3.2/logging/config.py", line 79, in fileConfig
_install_loggers(cp, handlers, disable_existing_loggers)
File "/usr/lib/python3.2/logging/config.py", line 202, in _install_loggers
log.addHandler(handlers[hand])
KeyError: 'nullHandler'
我发现无法使用此nullHandler。 配置文件是:
[loggers]
keys=root,RPIO
[handlers]
keys=fileHandler
[formatters]
keys=defaultFormatter
[logger_root]
level=DEBUG
handlers=fileHandler
[logger_RPIO]
level=NOTSET
handlers=nullHandler
qualname=_RPIO.py
propagate=0
[handler_nullHandler]
class=NullHandler
level=DEBUG
[handler_fileHandler]
class=FileHandler
level=DEBUG
formatter=defaultFormatter
filemode=w
args=('../log/pilberry_core.log',)
[formatter_defaultFormatter]
format=%(asctime)s %(filename)s: %(funcName)s: %(message)s
datefmt=%Y/%m/%d %H:%M:%S
其他尝试失败:尝试没有定义[handler_nullHandler],使用nullHandler或NullHandler作为格式化程序,它总是以相同的方式失败。
请注意,如果我禁用RPIO_logger(通过从[loggers]键部分删除RPIO),那么其余的工作正常。
那么,使用nullHandler的正确方法是什么?
答案 0 :(得分:2)
在handlers
部分,您只列出fileHandler
。因此,当您在该配置中读取时,它会构建仅handlers
的{{1}}字典。因此,当您尝试使用fileHandler
时,会得到nullHandler
,因为它不在字典中。
我猜这是一个简单的拼写错误,但如果没有,请参阅文档中的Configuration file format:
该文件必须包含名为[loggers],[handlers]和[formatters]的部分,这些部分按名称标识文件中定义的每种类型的实体。对于每个这样的实体,都有一个单独的部分,用于标识该实体的配置方式。
换句话说,只有KeyError
部分不会创建名为handler_nullHandler
的处理程序;在nullHandler
部分中keys=…,nullHandler,…
执行此操作。