0

以下代码导致相同的日志消息被输出两次:

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' 路径,所以两个记录器都会收到消息。我的问题是:除了确保我永远不会有两个记录器指向同一个日志路径中的同一个文件之外,还有什么方法可以防止这种行为?

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 回答