1. ホーム
  2. python

[解決済み] ログのsetLevelが無視される

2023-05-22 02:39:50

質問

以下のコードは、ドキュメントからコピーしたものです。私はすべての情報ログを見ることができるはずです。しかし、私はそうしません。setLevelをINFOにしたのに、warn以上しか見ることができません。

なぜこのようなことが起こるのでしょうか? foo.py :

import logging

logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)

logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')

出力します。

workingDirectory$ python foo.py
warn message
error message
critical message

infoとdebugのメッセージはどこに行ったのでしょうか?

どのように解決するのですか?

行を置き換える

logger.setLevel(logging.DEBUG)

logging.basicConfig(level=logging.DEBUG, format='%(message)s')

とすれば、期待通りに動作するはずです。もし、ハンドラを使ってロギングを設定しなかった場合 (あなたの投稿のように、ロガーのレベルだけを設定して、ハンドラをどこにも設定しなかった場合)、内部ハンドラである "最後の手段" にメッセージだけを出力するように設定されています (他の書式はありません)。 WARNING レベルで出力するように設定されています。