Python日志记录:导入模块中的模块信息

时间:2017-07-21 16:50:54

标签: python logging

我正在尝试在python日志记录中使用一些看似简单的东西。在调试日志记录期间,我想记录整个module->函数的堆栈,但是我无法让导入的类正确地继承该信息。

我想要得到的例子:

module.imported_module.function - message
module.imported_module2.function - message
module.imported_module3.imported_module.function - message

我已经能够使用logging.getLogger( file )来正确填充基本模块名称,但是当我试图想办法将它传递给子模块时,我会自己进入麻烦,因为logging.getLogger()需要在logging.getLogger()调用中使用父名称,如:

logging.getLogger('module.submodule')

我觉得必须有一个简单的方法将这些信息传递给导入的模块和类,但我似乎无法找到一种方法,不涉及为日志记录模块引用临时文件,因为我运行它,这并不理想。

任何帮助都表示赞赏 - 即使它只是“闭嘴并且看起来更难” - 因为我似乎找不到合适的关键词来获得类似的东西。

这是我的module.py代码:

#!/usr/bin/python

import logging
import aux
import sys
from autologging import logged

logging.basicConfig(
    level=logging.DEBUG, stream=sys.stdout,
    format="%(levelname)s:%(name)s:%(funcName)s:%(message)s")
logger = logging.getLogger(__name__)


def print_names():
    logger.info('test info')
    logger.debug('test debug')
    logger.error('test error')
    aux.printme()


if __name__ == '__main__':
    print_names()

和aux.py:

#!/usr/bin/python
import logging
from autologging import logged


logger = logging.getLogger(__name__)
def printme():
    logger.info('test info')
    logger.debug('test debug')
    logger.error('test error')

我目前得到的输出:

bub@bubdev:~/tools/$ ./module.py 
INFO:__main__:print_names:test info
DEBUG:__main__:print_names:test debug
ERROR:__main__:print_names:test error
INFO:aux:printme:test info
DEBUG:aux:printme:test debug
ERROR:aux:printme:test error

我想要的是:

bub@bubdev:~/tools/$ ./module.py 
INFO:__main__:print_names:test info
DEBUG:__main__:print_names:test debug
ERROR:__main__:print_names:test error
INFO:__main__:print_names:aux:printme:test info
DEBUG:__main__:print_names:aux:printme:test debug
ERROR:__main__:print_names:aux:printme:test error

1 个答案:

答案 0 :(得分:0)

为什么不按the documentation

中所述使用logging.getLogger(__name__)