logging模块是Python的日志管理模块,它为Python的高效开发提供了强力的支持。
但是我在使用logging模块时却遇到一个很诡异的错误,我分别以"a"和"a.b"两个字符串调用logging.getLogger函数来获取两个logging对象。例如:
a= logging.getLogger("a")
b= logging.getLogger("a.b")
在执行上面两行代码后,(假设两个日志文件存放在同一文件目录下),对象a的日志输出是正常的,但是对象b出了些问题:每当对象开始进行打日志时,对象a也会被打日志。
出现这个问题,有两个解决方法:
- 将对象a所对应的日志文件放在与对象b所对应的日志文件不相同的目录下。
- 对象a所对应的日志文件与对象b所对应的日志文件放在相同的目录下,但是调用getLogger时,两个对象不能使用具有相同前缀名的名称。例如,我们可以分别以"a"和"a_b.b"来分别作为两个对象的 getlogger参数,因为它们的前缀分别是"a"和"a_b",二者不相同。
为什么这么来解决,可以看logging模块的源码。