禁用特定程序包的日志记录 [英] Disable logging for a particular package
问题描述
我正在应用程序中实现python日志记录,我希望能够利用默认"根目录设置.我想使用root设置,因为我不想在配置文件中为每个模块定义一个记录器.
I am implementing python logging in my application, and I want to be able to leverage the "default" root settings. I want to use root settings because I dont want to have to define a logger per module in a config file.
当我为根记录器打开调试级别的记录时,我遇到了QPID Python客户端API的问题.我的日志文件充满了qpid调试语句:
When I turn on DEBUG level logging for the root logger, I am running into an issue with the QPID Python Client API. My log files get flooded with qpid debug statements:
2011-03-16 09:16:18,664-qpid.messaging.io.ops-调试-已发送[8de6b2c]:..
2011-03-16 09:16:18,664 - qpid.messaging.io.ops - DEBUG - SENT[8de6b2c]: ..
2011-03-16 09:16:18,667-qpid.messaging.io.raw-调试-..
2011-03-16 09:16:18,667 - qpid.messaging.io.raw - DEBUG - ..
2011-03-16 09:16:18,668-qpid.messaging.io.raw-调试-读取[8de6b2c]:..
2011-03-16 09:16:18,668 - qpid.messaging.io.raw - DEBUG - READ[8de6b2c]: ..
2011-03-16 09:16:18,668-qpid.messaging.io.ops-调试-..
2011-03-16 09:16:18,668 - qpid.messaging.io.ops - DEBUG - ..
等等.
所以有两个主要问题:
1)是否可以在不为每个模块定义记录器的情况下仅对我的模块启用*记录?换句话说,有一种方法可以共享记录器设置",因此不必为每个记录器定义logger_部分,而是可以使用默认设置?
1) Is there a way to enable* logging for just my modules without defining a logger per module? In other words is there a way to do shared "logger settings," so instead of having to define a logger_ section per logger is there a way to default the settings?
类似的东西:
[logger_shared_settings]
loggers = logger_A,logger_B,logger_C,logger_D
level=DEBUG
2)或如何通过配置文件过滤qpid包日志?
2) Or How can i filter out the qpid package logging via a config file?
这是log.conf文件:
Here is the log.conf file:
[loggers]
keys=root
[handlers]
keys=consoleHandler,fileHandler,nullHandler
[formatters]
keys=simpleFormatter
[logger_root]
level=DEBUG
handlers=consoleHandler,fileHandler
[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)
[handler_fileHandler]
class=logging.handlers.RotatingFileHandler
level=DEBUG
formatter=simpleFormatter
args=('out.log',)
这就是我要避免的事情:
Here was what I was trying to avoid:
[loggers]
keys=root, a, b, c, d
[handlers]
keys=consoleHandler,fileHandler,nullHandler
[formatters]
keys=simpleFormatter
[logger_root]
level=ERROR
handlers=nullHandler
[logger_a]
level=DEBUG
handlers=consoleHandler,fileHandler
[logger_b]
level=DEBUG
handlers=consoleHandler,fileHandler
[logger_c]
level=DEBUG
handlers=consoleHandler,fileHandler
推荐答案
使用python2.7,您可以将NullHandler设置为qpid logger:
With python2.7 you can set NullHandler to qpid logger:
[logger_qpid]
level=NOTSET
handlers=nullHandler
qualname=qpid
propagate=0
这篇关于禁用特定程序包的日志记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!