我正在应用程序中实现Python日志记录,并希望能够利用“默认”根设置。 我想使用根设置,因为我不想在配置文件中为每个模块定义一个记录器。
当我为根记录器启用DEBUG级别记录时,我遇到了QPID Python Client API的问题。我的日志文件被qpid调试语句淹没:
所以两个主要问题:
当我为根记录器启用DEBUG级别记录时,我遇到了QPID Python Client API的问题。我的日志文件被qpid调试语句淹没:
等等。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 - DEBUG - ..
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 - DEBUG - ..
所以两个主要问题:
1)有没有一种方法可以仅为我的模块启用日志记录,而无需为每个模块定义一个记录器?换句话说,是否有一种共享“记录器设置”的方法,因此不必为每个记录器定义一个logger_部分,是否有一种默认设置的方法?
类似于:
[logger_shared_settings]
loggers = logger_A,logger_B,logger_C,logger_D
level=DEBUG
2) 或者我如何通过配置文件过滤掉qpid包的日志记录?
这是log.conf文件:
[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',)
这就是我试图避免的:
[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