我几乎整天都在努力解决这个问题。我正在尝试添加自定义处理程序以将所有日志数据发送到GUI会话中。它可以工作,但处理程序不会扩展到子模块,只是从主模块发出记录。这是我试过的小片段
我有两个文件
# main.py
import logging
import logging_two
def myapp():
logger = logging.getLogger('myapp')
logging.basicConfig()
logger.info('Using myapp')
ch = logging.StreamHandler()
logger.addHandler(ch)
logging_two.testme()
print logger.handlers
myapp()
第二个模块
#logging_two
import logging
def testme():
logger = logging.getLogger('testme')
logger.info('IN test me')
print logger.handlers
我希望logging_two.testme中的记录器具有我在主模块中添加的处理程序。我向我看了一下这些文档似乎应该可行,但我不确定我是不是错了?
我得到的结果是
[]
[<logging.StreamHandler object at 0x00000000024ED240>]
答案 0 :(得分:1)
在myapp()
中,您将处理程序添加到名为'myapp'
的记录器中。由于testme()
正在获取名为'testme'
的记录器,因此它没有处理程序,因为它是日志记录层次结构的不同部分。
如果您在logger = logger.getLogger()
中只有myapp()
,那么它就会起作用,因为您要将处理程序添加到层次结构的根目录。