问题描述
我有一个服务在 docker 内部的烧瓶上运行,它接收请求。 对于每个请求,我想导出一个日志文件,包括所有模块的所有日志。 现在,它不断地记录日志以使用 basicConfig 进行流式传输,这很棒。 但是,我需要为每个请求(不同的文件路径)添加一个 fileHandler
我在 requestHandler.py 中添加了请求到达时的 fileHandler,并在处理请求时删除了处理程序。这有效,文件已正确创建,但问题是由于某种原因它不适用于其他模块。它只是从创建处理程序的模块记录到文件。
阅读文档,记录说明它应该是全局的:
" 在多个模块中使用日志
多次调用 logging.getLogger('someLogger') 返回对同一个记录器的引用 目的。不仅在同一个模块内如此,而且跨模块也是如此,只要它 在同一个 Python 解释器进程中。对同一对象的引用也是如此; 此外,应用程序代码可以在一个模块中定义和配置父记录器,并且 在单独的模块中创建(但不配置)一个子记录器,并且所有记录器调用 孩子会传给父母。这是一个主要模块:“
我的模块设置:
main.py
logging.basicConfig(level=logging.INFO,format=config.LOG_FORMAT)
logger = logging.getLogger()
requestHandler.py
logger = logging.getLogger(__name__)
def add_file_logging(self):
for hdlr in logger.handlers[:]: # remove the existing file handlers
if isinstance(hdlr,logging.FileHandler):
logger.removeHandler(hdlr)
fh = logging.FileHandler(filename=self.log_file_path)
fh.setFormatter(config.LOG_FORMAT)
fh.setLevel(logging.INFO)
logger.addHandler(fh)
logger.info("Added file handler : {}".format(self.log_file_path))
other_module.py
logger = logging.getLogger(__name__)
如果您对此功能有解决方案或更好的方法,请提供帮助。 谢谢!:)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)