猿问

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

我目前只知道可以这样:
handlers:
file_a:
formatter:standard
filename:/var/log/a.log
file_b:
formatter:standard
filename:/var/log/b.log
loggers:
logger_a:
level:DEBUG
handlers:[file_a]
logger_b:
level:DEBUG
handlers:[file_b]
又没有什么方法可以根据logger的名称来决定文件名?比如这样:
handlers:
multi_file:
filename:/var/log/{name}.log
目前考虑可用的就是包装下logging.getLogger方法,在拿logger的时候去配置它的fileHandler,又没有更简单易用的方式?
Cats萌萌
浏览 1529回答 2
2回答

哈士奇WWW

反正我的经验就是能不写wrapper就不写,因为你不知道后面维护这份代码的人能不能看懂你写的嵌套。我觉得可以简单继承一下logging的Manager类来实现:importloggingclassCustomManger(logging.Manager):defgetLogger(self,name,format=None):logger=super(CustomManger,self).getLogger(name)#简单写一下,Formatter你自己实现吧filename='{}.log'.format(name)logger.addHandler(logging.FileHandler(filename))returnloggermanager=CustomManger(logging.root)if__name__=='__main__':logger_a=manager.getLogger('a')logger_b=manager.getLogger('b')logger_a.error('111')logger_b.error('222')
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答