2011-03-16 11 views
6

私は自分のアプリケーションにPythonのロギングを実装しており、 "デフォルト"のルート設定を利用したいと考えています。私は設定ファイルでモジュールごとにロガーを定義しなければならないので、ルート設定を使用したい。特定のパッケージのログを無効にする

ルートロガーのDEBUGレベルのログを有効にすると、QPID Python Client APIの問題が発生しています。私のログファイルはqpidデバッグ文が殺到します:

2011-03-16 09:16:18664 - qpid.messaging.io.ops - DEBUG - [8de6b2c] SENT ..

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 - DEBUG - ..

など。

ように、2つの主要な質問:

1)モジュールごとにロガーを定義せずに*私のモジュールのログ記録を有効にする方法はありますか?言い換えれば、共有された "ロガー設定"を行う方法があるので、ロガーごとにlogger_セクションを定義する代わりに、設定をデフォルトにする方法がありますか?

ような何か:

[logger_shared_settings] 
    loggers = logger_A,logger_B,logger_C,logger_D 
    level=DEBUG 

2)またはどのように私は、configファイルを経由してqpidパッケージのログをフィルタリングすることができますか?

[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',) 

ここで私は避けるようにしようとしていた何だった:ここ

は、log.confファイルがある

[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

あなたはqpidロガーにNullHandlerを設定することができpython2.7で:

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

これはうまくいきます、あなたは共有セットを行う方法について知っていますか何か? – Nix

+0

Hmmm ...「共有設定」はどういう意味ですか? – oxyum

+0

ルートロガーのようなものですが、私のアプリケーションでモジュールを適用できる別のセクションです。 – Nix

関連する問題