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 正确使用nullHandler禁用来自特定包的日志消息_Python_Logging_Config Files - Fatal编程技术网

Python 正确使用nullHandler禁用来自特定包的日志消息

Python 正确使用nullHandler禁用来自特定包的日志消息,python,logging,config-files,Python,Logging,Config Files,我想停止一个外部模块来淹没我的日志文件,如以下问题所示: 下面是受答案启发的配置文件。我使用python3.2 我的问题是,它不起作用:行“handlers=nullHandler”引发了以下问题: Traceback (most recent call last): File "./tree_browser", line 44, in <module> logging.config.fileConfig('../log/logging.conf') File "/u

我想停止一个外部模块来淹没我的日志文件,如以下问题所示: 下面是受答案启发的配置文件。我使用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'
其他失败的尝试:尝试时没有定义[handler_nullHandler],使用nullHandler或nullHandler作为格式化程序,它总是以相同的方式失败

请注意,如果我禁用RPIO_记录器(通过从[loggers]键部分删除RPIO),那么其余的工作正常


那么,使用nullHandler的正确方法是什么呢?

处理程序
部分中,您只列出
文件处理程序
。因此,当您阅读该配置时,它只使用
fileHandler
构建一个
handlers
字典。因此,当您尝试使用
nullHandler
时,您会得到一个
KeyError
,因为它不在字典中

我猜这是一个简单的打字错误,但如果不是,请参见文档:

该文件必须包含名为[Logger]、[Handler]和[formatters]的部分,这些部分通过名称标识文件中定义的每种类型的实体。对于每个这样的实体,都有一个单独的部分来标识该实体是如何配置的


换句话说,仅仅拥有
handler\u nullHandler
部分并不会创建名为
nullHandler
的处理程序;在
handlers
部分中使用
keys=…,nullHandler,
可以做到这一点。

在出现类似错误后,我还必须在处理程序配置和级别中指定
args=()
。将null处理程序添加到子记录器如何防止根记录器显示日志消息?
[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