为了账号安全,请及时绑定邮箱和手机立即绑定

python使用配置文件配置logging, 如何方便的将多个logger打印到不同的文件?

python使用配置文件配置logging, 如何方便的将多个logger打印到不同的文件?

Cats萌萌 2019-05-20 18:03:21
我目前只知道可以这样:handlers:file_a:formatter:standardfilename:/var/log/a.logfile_b:formatter:standardfilename:/var/log/b.logloggers:logger_a:level:DEBUGhandlers:[file_a]logger_b:level:DEBUGhandlers:[file_b]又没有什么方法可以根据logger的名称来决定文件名?比如这样:handlers:multi_file:filename:/var/log/{name}.log目前考虑可用的就是包装下logging.getLogger方法,在拿logger的时候去配置它的fileHandler,又没有更简单易用的方式?
查看完整描述

2 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

反正我的经验就是能不写wrapper就不写,因为你不知道后面维护这份代码的人能不能看懂你写的嵌套。
我觉得可以简单继承一下logging的Manager类来实现:
importlogging
classCustomManger(logging.Manager):
defgetLogger(self,name,format=None):
logger=super(CustomManger,self).getLogger(name)
#简单写一下,Formatter你自己实现吧
filename='{}.log'.format(name)
logger.addHandler(logging.FileHandler(filename))
returnlogger
manager=CustomManger(logging.root)
if__name__=='__main__':
logger_a=manager.getLogger('a')
logger_b=manager.getLogger('b')
logger_a.error('111')
logger_b.error('222')
                            
查看完整回答
反对 回复 2019-05-20
  • 2 回答
  • 0 关注
  • 1528 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信