標準ライブラリを使用してコードをデバッグしようとしています:
これはうまく動作します:
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(..)
機能しない可能性があります。これは、アタッチされたハンドラーに独立して設定されたログ レベルがある場合があるためです。このようなケースはまずなく、通常は心配する必要はありません。