添加自定义处理程序与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>] 
+0

您是如何得到结果的?在哪个模块中使用dir()?如果你想让testme在myapp中记录ch,只需将ch作为一个函数传递给testme'def testme(ch):' – BenJ

myapp()您要添加的处理程序命名为'myapp'记录器。由于testme()正在获取名为'testme'的记录器,因此它不具有处理程序,因为它是记录层次结构的不同部分。

如果你只有logger = logger.getLogger()myapp()那么它会工作,因为你是将处理程序添加到层次结构的根。

退房python logging docs.

+0

非常感谢!我的印象是,入口点总是被挑选出来,因为根记录器是我的不好之处。 – skar