2011-03-16 152 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