2016-05-22 8 views
0

私のコードには2つのログハンドラがあります。は同じモジュールから標準出力にINFOレベルのログを書き込み、FileHandlerはより冗長に書くためにDEBUGログをファイルに書き込みます。しかし、私はFileHandlerも、他のモジュールからDEBUG情報を書きたい個別のログハンドラに異なる名前を設定するにはどうすればよいですか?

import sys 
import logging 

log = logging.getLogger('mymodule') 
log.setLevel(logging.DEBUG) 

logf = logging.FileHandler('file.log') 
logf.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')) 
log.addHandler(logf) 

logs = logging.StreamHandler(sys.stdout) 
logs.setLevel(logging.INFO) 
logs.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')) 
log.addHandler(logs) 

:これは私のコードです。 logging.getLogger()から名前を削除するとこれを実現できますが、これは私のStreamHandlerにも影響します。これは自分のモジュールからの出力のみを出力したいだけです。

ハンドラのいずれかに別の名前を使用する方法はありますか?

答えて

0

ベースHandlerクラスにはnameという属性があります。私はPythonソースを見て、それが内部的に使用されているようには見えないので、ハンドラーを手動で別の名前に設定することができました。

関連する問題