Python多个重复记录

Python多个重复记录,python,logging,Python,Logging,我有一个自定义的logger类,它在一个模块中工作得很好,但如果我在同一个包的其他模块中使用它,并且使用同一个filehandler,它会将记录从1乘以n。 我在5个线程中使用它,这就是为什么每次记录消息时我都试图关闭filehandler 类RootLogger(): 定义初始化(自): self.logger=无 #用于创建自定义记录器的框架 #名称-记录器的名称、字符串或类/模块名称 def set_配置(自身、名称、日志文件): self.logger=logging.getLogge

我有一个自定义的logger类,它在一个模块中工作得很好,但如果我在同一个包的其他模块中使用它,并且使用同一个filehandler,它会将记录从1乘以n。 我在5个线程中使用它,这就是为什么每次记录消息时我都试图关闭filehandler


类RootLogger():
定义初始化(自):
self.logger=无
#用于创建自定义记录器的框架
#名称-记录器的名称、字符串或类/模块名称
def set_配置(自身、名称、日志文件):
self.logger=logging.getLogger(名称)
#电文格式
格式化程序=日志记录。格式化程序('%(asctime)s-[%(名称)s][%(levelname)s]%(消息)s')
#日志文件旋转,时间
handler=RotatingFileHandler(文件名=logfile,
maxBytes=8000000,
备份计数=5,
编码(='utf-8')
#handler=StreamHandler()
handler.setFormatter(格式化程序)
self.logger.setLevel(logging.DEBUG)
self.logger.addHandler(处理程序)
self.logger.setLevel(logging.DEBUG)
返回自动记录器
#排除“打开的文件过多”错误的修补程序
定义(自我):
如果self.logger:
对于self.logger.handlers中的hdlr:
#hdlr.flush()
hdlr.close()
#覆盖命令
def信息(自我,消息):
self.logger.info(msg)
赛尔夫
def调试(self,msg):
self.logger.debug(msg)
赛尔夫
def错误(self,msg):
self.logger.error(msg)
赛尔夫
def警告(自我,消息):
self.logger.warning(msg)
赛尔夫
def临界(自我,msg):
self.logger.warning(msg)
赛尔夫

在创建更多处理程序之前,您希望检查记录器是否已经存在处理程序

self.logger = logging.getLogger(name)
if not self.logger.handlers:
    #Create the handlers