我想知道如何实现一个可以在任何地方使用您自己的设置的全局记录器:
我目前有一个自定义记录器类:
class customLogger(logging.Logger):
...
该类位于一个单独的文件中,其中包含一些格式化程序和其他内容。 记录器可以独立运行。
我在我的主 python 文件中导入这个模块并创建一个像这样的对象:
self.log = logModule.customLogger(arguments)
但显然,我无法从代码的其他部分访问此对象。 我使用了错误的方法吗?有没有更好的方法来做到这一点?
最佳答案
使用 logging.getLogger(name)
创建一个命名的全局记录器。
main.py
import log
logger = log.setup_custom_logger('root')
logger.debug('main message')
import submodule
log.py
import logging
def setup_custom_logger(name):
formatter = logging.Formatter(fmt='%(asctime)s - %(levelname)s - %(module)s - %(message)s')
handler = logging.StreamHandler()
handler.setFormatter(formatter)
logger = logging.getLogger(name)
logger.setLevel(logging.DEBUG)
logger.addHandler(handler)
return logger
submodule.py
import logging
logger = logging.getLogger('root')
logger.debug('submodule message')
输出
2011-10-01 20:08:40,049 - DEBUG - main - main message
2011-10-01 20:08:40,050 - DEBUG - submodule - submodule message
关于Python:日志记录模块 - 全局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7621897/