python写入日志文件时日志内容重复写入:原因handler未移除,导致重复写入
问了度娘之后,大概搞明白了,就是你第二次调用log的时候,根据getLogger(name)里的name获取同一个logger,而这个logger里已经有了第一次你添加的handler,第二次调用又添加了一个handler,所以,这个logger里有了两个同样的handler,以此类推,调用几次就会有几个handler。。
修改前代码:
1 # coding:utf-8 2 import logging 3 from logging import handlers 4 5 6 class Logger(): 7 level_relations = { "debug": logging.DEBUG, "info": logging.INFO, "warning": logging.WARNING, 8 "error": logging.ERROR, "critical": logging.CRITICAL,} 9 fmt_str = "%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s:%(message)s" 10 def __init__(self, filename, level="info", when="D", backCount=2, fmt=fmt_str): 11 self.logger = logging.getLogger(filename) 12 format_str = logging.Formatter(fmt) 13 self.logger.setLevel(self.level_relations.get(level)) 14 self.th = handlers.TimedRotatingFileHandler(filename, when=when, backupCount=backCount, encoding="utf-8") 15 self.th