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