76

次のコードがあるとします。

import logging
import logging.handlers

a = logging.getLogger('myapp')
h = logging.handlers.RotatingFileHandler('foo.log')
h.setLevel(logging.DEBUG)
a.addHandler(h)

# The effective log level is still logging.WARN
print a.getEffectiveLevel() 
a.debug('foo message')
a.warn('warning message')

ハンドラーを設定logging.DEBUGすると、デバッグ レベルのメッセージがログ ファイルに書き込まれると思います。logging.WARNINGただし、これは有効なレベル (デフォルトの に等しい) として 30 を出力しwarn、デバッグ メッセージではなく、メッセージのみをログ ファイルに記録します。

ハンドラーのログ レベルが低下しているように見えます。たとえば、黙って無視されています。なぜsetLevelハンドラーを持っているのですか?

4

4 に答える 4

23

ハンドラーは、ログ イベントのさまざまな対象者を表します。ハンドラーのレベルは、特定のオーディエンスに表示される出力の冗長性を制御するために使用され、ロガーに設定されたレベルに加えて機能します。ロガーのレベルは、アプリケーションまたはライブラリのさまざまな部分からのロギングの全体的な冗長性を制御するために使用されます。

ロギング イベントの処理方法の詳細については、次のを参照してください。

ここに画像の説明を入力

于 2013-07-16T07:08:38.287 に答える