読者です 読者をやめる 読者になる 読者になる

methaneのブログ

このブログに乗せているサンプルコードはすべてNYSLです。

logging.basicConfig() はすべてのログ出力に先立って呼び出す必要がある

Python

logging.basicConfig() はルートロガーがまだ初期化されていない場合に初期化する関数だけど、一度でもログを出力すると自動でルートロガーが初期化されてしまうので basicConfig() は無効になってしまう。

import logging
import foo
...
if __name__ == '__main__':
    logging.basicConfig(...)
    ...

のような処理をしているときは、ロードしたモジュールの初期化処理や自身の初期化処理内でログを出力する可能性を考慮する必要がある。必要があれば、loggingのセットアップだけ先頭で行う。

import logging
if __name__ == '__main__':
    logging.basicConfig(...)

import foo
...
if __name__ == '__main__':
    ...