我正在尝试在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