ログレベルを設定する 質問する

ログレベルを設定する 質問する

標準ライブラリを使用してコードをデバッグしようとしています:

これはうまく動作します:

import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
logger.info('message')

下位レベルのロガーを動作させることができません:

logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
logger.info('message')

logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
logger.debug('message')

どちらに対しても何の返答もありません。

ベストアンサー1

Pythonのバージョンは?3.4では動作します。ただし、基本設定()ルート ハンドラーがすでに設定されている場合は影響しません。

ルート ロガーにすでにハンドラーが設定されている場合、この関数は何も実行しません。

ルートのレベルを明示的に設定するには、 を実行します。ただし、ルート ロガーが最初に何らかの設定を行えるように、事前にlogging.getLogger().setLevel(logging.DEBUG)を呼び出していることを確認してください。例:basicConfig()

import logging
logging.basicConfig()
logging.getLogger().setLevel(logging.DEBUG)
logging.getLogger('foo').debug('bah')
logging.getLogger().setLevel(logging.INFO)
logging.getLogger('foo').debug('bah')

また、「ロガー」とその「ハンドラー」は、それぞれ独立したログ レベルを持っていることにも注意してください。したがって、以前に Python スクリプトで複雑なロガー構成を明示的にロードし、それがルート ロガーのハンドラーに影響を及ぼしていた場合、これが影響し、ロガーのログ レベルを変更するだけではlogging.getLogger().setLevel(..)機能しない可能性があります。これは、アタッチされたハンドラーに独立して設定されたログ レベルがある場合があるためです。このようなケースはまずなく、通常は心配する必要はありません。

おすすめ記事