標準の Python (2.7) ロギング ライブラリを使用するプロジェクトにモジュールを追加しようとしています。私が達成したいことは次のとおりです。
- メインプログラム(私の制御外)がロギングを設定した場所(通常はstderr)に、WARNINGと同等またはそれより悪いものはすべて行きます
- 他のすべて (主にデバッグ メッセージ) はログ ファイルに送信されます。
ここでの重要な問題は、グローバル ログ設定を変更したくないということです。これらはメイン アプリによって制御されているためです。それ以外の場合は、次の例を使用します。
http://docs.python.org/2/howto/logging-cookbook.html#logging-to-multiple-destinations
私はこれを試しました:
logger = logging.getLogger('my_module')
logger.setLevel(logging.WARNING)
fh = logging.FileHandler('my_module.log')
fh.setLevel(logging.DEBUG)
logger.addHandler(fh)
しかし、その後、ファイルに警告メッセージしか表示されません。
上記の行を次のように置き換えると:
logger.setLevel(logging.DEBUG)
その後、stderr と自分のファイルの両方にデバッグ メッセージが表示されます。
それから私はこれを試しました:
logger = logging.getLogger('my_module')
logger.setLevel(logging.DEBUG)
logger.addHandler(logging.NullHandler())
console = logging.StreamHandler()
console.setLevel(logging.WARNING)
logger.addHandler(console)
fh = logging.FileHandler('my_module.log')
fh.setLevel(logging.DEBUG)
logger.addHandler(fh)
しかし、再び運がありません。
では、basicConfig() など、グローバル ロギング インフラストラクチャに影響を与えるものを呼び出さなくても、これを実現できますか? 可能であれば、ここで自分のモジュールを変更したいだけです。
ありがとう!