1 import logging 2 from configs.global_data import Logger 3 4 5 class LogHandler: 6 obj = None 7 8 def __init__(self): 9 self.file_name = Logger.file_name # 调用配置文件Logger类属性 10 self.logger_level = Logger.logger_level 11 self.file_handler_level = Logger.file_handler_level 12 self.console_handler_level = Logger.console_handler_lever 13 self.fmt = Logger.fmt 14 15 def __new__(cls, *args, **kwargs): 16 """ 17 实现单例模式 18 :param args: 19 :param kwargs: 20 """ 21 if cls.obj is None: # 如果obj对象不存在,则调用父类进行创建 22 cls.obj = object.__new__(cls) 23 return cls.obj # 存在直接返回 24 25 def log(self): 26 # 1、创建日志收集器 27 logger = logging.getLogger("log") 28 logger.setLevel(self.logger_level) # 设置日志收集器级别,只在日志生成是生效 29 # 2、创建日志处理器 30 # 2.1、创建文件日志处理器,将日志输出到文件 31 file_handler = logging.FileHandler(self.file_name, encoding="utf-8") 32 file_handler.setLevel(self.file_handler_level) 33 # 2.2、创建控制台日志处理器,将日志输出到控制台 34 console_handler = logging.StreamHandler() 35 console_handler.setLevel(self.console_handler_level) 36 # 3、创建日志格式器 37 fmt = logging.Formatter(fmt=self.fmt) 38 # 4、给日志处理器添加日志格式器 39 file_handler.setFormatter(fmt) 40 console_handler.setFormatter(fmt) 41 # 5、给日志收集器添加日志处理器 42 logger.addHandler(file_handler) 43 logger.addHandler(console_handler) 44 return logger 45 46 47 if __name__ == '__main__': 48 log = LogHandler().log() 49 log.debug("这个是调试级别日志") 50 log.info("这个是用户操作日志") 51 log.error("这个是错误级别日志") 52 log.warning("这个是警告级别日志")
标签:__,logger,file,python,loggin,handler,单例,日志,self From: https://www.cnblogs.com/Nichs/p/16778964.html