Pythonのロギングシステムは非常に強力で、多くの情報を提供してくれます。しかし、時々、同じログが二重に表示される問題に遭遇することがあります。これは、特に同じLogger
オブジェクトに対してaddHandler
を二度呼び出した場合や、propagate
設定がTrue
のままになっている場合に発生します。
この問題を解決するための一般的な方法は以下の2つです:
Logger
にハンドラを指定しない。Logger
のpropagate
値をfalse
にする。
これらの方法を詳しく見てみましょう。
方法1:Logger
にハンドラを指定しない
この方法は、Logger
の設定からハンドラの指定を削除するだけです。以下はその例です:
logging.yaml
loggers:
fuga:
level: DEBUG
方法2:Logger
のpropagate
値をfalse
にする
この方法は、Logger
のpropagate
値をfalse
に設定することで、ログが親のLogger
に伝播するのを防ぎます。以下はその例です:
logging.yaml
loggers:
fuga:
level: DEBUG
handlers: [fileRotatingHandler, consoleHandler]
propagate: false
これらの方法を試すことで、Pythonのロギングで二重ログが表示される問題を解決できるはずです。適切な方法を選んで、より効果的なロギングを行いましょう。