0

次のコードでは、同じログ メッセージが 2 回出力されます。

log1 = logging.getLogger('foo')
log1.addHandler(logging.FileHandler('log.txt'))
log2 = logging.getLogger('foo.bar')
log2.addHandler(logging.FileHandler('log.txt'))

log2.warn("test message")

これは、'foo.bar' が 'foo' パスと 'foo.bar' パスの両方に一致するためであり、両方のロガーがメッセージを受け取るためであることがわかりました。私の質問は、2 つのロガーが同じログ パス内の同じファイルを指していないことを確認する以外に、この動作を防ぐ方法はありますか?

4

1 に答える 1

3

祖先ロガーのハンドラーにlog2 メッセージを伝搬しないように指示できます。

log2.propagate = False

import logging

log1 = logging.getLogger('foo')
log1.addHandler(logging.FileHandler('log.txt'))
log2 = logging.getLogger('foo.bar')
log2.addHandler(logging.FileHandler('log.txt'))
log2.propagate = False
log2.warn("test message")

test messageに一度だけ書き込みますlog.txt

于 2013-02-25T20:17:11.033 に答える