添加自定义处理程序与Python日志记录
问题描述:
我一直在这个几乎整天无法找到我失踪的东西。我正在尝试添加一个自定义处理程序以将所有日志数据发送到GUI会话中。它可以工作,但处理程序不会扩展到子模块,只是从主模块发出记录。这里是一个小片段我试图添加自定义处理程序与Python日志记录
我有两个文件
# 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>]
答
在myapp()
您要添加的处理程序命名为'myapp'
记录器。由于testme()
正在获取名为'testme'
的记录器,因此它不具有处理程序,因为它是记录层次结构的不同部分。
如果你只有logger = logger.getLogger()
myapp()
那么它会工作,因为你是将处理程序添加到层次结构的根。
+0
非常感谢!我的印象是,入口点总是被挑选出来,因为根记录器是我的不好之处。 – skar
您是如何得到结果的?在哪个模块中使用dir()?如果你想让testme在myapp中记录ch,只需将ch作为一个函数传递给testme'def testme(ch):' – BenJ