Pythonでログを出力する際に、同じログが2回出力される問題に遭遇したことはありますか?この記事では、その原因と解決策について詳しく説明します。
原因
Pythonのlogging
モジュールを使用していると、同じログが2回出力されることがあります。これは、同一のレコードが複数回発行される可能性があるためです。具体的には、ハンドラを、あるロガーとその祖先のロガーに接続した場合に発生します。
解決策
この問題を解決するための一般的な方法は、ハンドラをルートロガーに対してのみ接続し、残りはpropagate
にすべて委ねることです。以下に、具体的な解決策を2つ紹介します。
方法1:fugaロガーにハンドラを指定しない
logging.yaml
loggers:
fuga:
level: DEBUG
方法2:fugaロガーのpropagate値をfalseにする
logging.yaml
loggers:
fuga:
level: DEBUG
handlers: [fileRotatingHandler, consoleHandler]
propagate: false
これらの方法を試すことで、Pythonのログが重複して出力される問題を解決できるでしょう。それぞれの状況に応じて最適な方法を選んでください。.