联系
Knight's Tale » 技术

python的logging模块getLogger错误

2011-06-02 14:00

logging模块是Python的日志管理模块,它为Python的高效开发提供了强力的支持。

但是我在使用logging模块时却遇到一个很诡异的错误,我分别以"a"和"a.b"两个字符串调用logging.getLogger函数来获取两个logging对象。例如:

a= logging.getLogger("a")
b= logging.getLogger("a.b")

在执行上面两行代码后,(假设两个日志文件存放在同一文件目录下),对象a的日志输出是正常的,但是对象b出了些问题:每当对象开始进行打日志时,对象a也会被打日志。

出现这个问题,有两个解决方法:

  1. 将对象a所对应的日志文件放在与对象b所对应的日志文件不相同的目录下。
  2. 对象a所对应的日志文件与对象b所对应的日志文件放在相同的目录下,但是调用getLogger时,两个对象不能使用具有相同前缀名的名称。例如,我们可以分别以"a"和"a_b.b"来分别作为两个对象的 getlogger参数,因为它们的前缀分别是"a"和"a_b",二者不相同。
为什么这么来解决,可以看logging模块的源码。