当日志路径重叠时,防止python FileHandler中的双输出

时间:2013-02-25 20:14:36

标签: python logging

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

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'路径,因此两个记录器都会收到消息。我的问题是:有没有办法防止这种行为,除了确保我从来没有两个记录器指向同一日志路径中的同一个文件?

1 个答案:

答案 0 :(得分:3)

您可以告诉log2 not to propagate messages祖先记录器的处理程序:

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一次。