2011-03-16 40 views
6

我在我的应用程序中实现了python日志记录,并且我希望能够利用“默认”根设置。我想使用根设置,因为我不想在配置文件中定义每个模块的记录器。禁用特定包的日志记录

当我打开根日志记录器的DEBUG级日志记录时,我遇到了QPID Python客户端API的问题。我的日志文件会充斥着qpid调试语句:

2011-03-16 09:16:18664 - qpid.messaging.io.ops - 调试 - 发[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:18668 - qpid.messaging.io.ops - 调试 - ..

等。

所以两个主要问题:

1)有没有一种方法,使*只是我的模块使用,而不限定每个模块的记录程序?换句话说,是否有一种方法可以共享“记录器设置”,因此,不必为每个记录器定义记录器部分,是否有一种方法来默认设置?

喜欢的东西:

[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 

回答

3

随着python2.7你可以设置NullHandler到qpid记录:

[logger_qpid] 
level=NOTSET 
handlers=nullHandler 
qualname=qpid 
propagate=0 
+0

这个工程,jw你知道有什么办法做共享集吊环? – Nix

+0

嗯...什么意思是“共享设置”? – oxyum

+0

有点像根记录器,但有一个不同的部分,我可以将这些模块应用到我的应用程序中。 – Nix