使用Python日志添加自定义处理程序

时间:2016-01-22 01:16:47

标签: python logging

我几乎整天都在努力解决这个问题。我正在尝试添加自定义处理程序以将所有日志数据发送到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>]

1 个答案:

答案 0 :(得分:1)

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

如果您在logger = logger.getLogger()中只有myapp(),那么它就会起作用,因为您要将处理程序添加到层次结构的根目录。

查看python logging docs.