我目前只知道可以这样: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类来实现: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')
添加回答
举报
0/150
提交
取消