接口之日志封装
最近框架封装完成后,介入日志的封装
先看一下整个封装的代码(红色是易错点):
思路:1.创建日志对象 2.给对象设置全局的日志级别 3.创建文件日志路径 4.创建日志的控制器,把日志路径传入 5.设置日志的级别 6设置控制器输出格式 7.把控制器加入到日志对象 8.返回
import logging import time from commons.yaml_util import get_object_path, read_config_yaml class LoggerUtil: def create_log(self,logger_name='log'): #创建一个日志对象 self.logger = logging.getLogger(logger_name) #设置全局的日志级别(从低到高:debug调试一定要到文件扩展名,/logs/这个斜杠不能省略,不然就成了文件名称) self.file_log_path = get_object_path()+"/logs/"+read_config_yaml("log","log_name")+str(int(time.time()))+".log" #2.创建文件日志的控制器 self.file_hander = logging.FileHandler(self.file_log_path,encoding='utf-8') #3.设置文件日志的日志级别 file_log_level = str(read_config_yaml("log","log_level")).lower() #当前main方法调用要小心一点,read_config_yaml的方法获取路径是在当前项目下操作 if file_log_level=="debug": self.file_hander.setLevel(logging.DEBUG) elif file_log_level=="info": self.file_hander.setLevel(logging.INFO) elif file_log_level=="warning": self.file_hander.setLevel(logging.WARNING) elif file_log_level=="error": self.file_hander.setLevel(logging.ERROR) elif file_log_level=="critical": self.file_hander.setLevel(logging.CRITICAL) else: self.file_hander.setLevel(logging.DEBUG) #4.创建文件日志的格式 self.file_hander.setFormatter(logging.Formatter(read_config_yaml("log","log_format"))) #将文件日志的控制器加入到日志对象 self.logger.addHandler(self.file_hander) #----------控制台日志---------- #1.创建控制台日志的控制器 self.console_hander = logging.StreamHandler() #2.设置控制台日志的日志级别 console_log_level = str(read_config_yaml("log", "log_level")).lower() if console_log_level == "debug": self.console_hander.setLevel(logging.DEBUG) elif console_log_level == "info": self.console_hander.setLevel(logging.INFO) elif console_log_level == "warning": self.console_hander.setLevel(logging.WARNING) elif console_log_level == "error": self.console_hander.setLevel(logging.ERROR) elif console_log_level == "critical": self.console_hander.setLevel(logging.CRITICAL) else: self.console_hander.setLevel(logging.DEBUG) #3.创建控制台日志的格式 self.console_hander.setFormatter(logging.Formatter(read_config_yaml("log", "log_format"))) #将控制台日志的控制器加入到日志对象 self.logger.addHandler(self.console_hander) #返回包含有文件日志控制器和控制台日志控制器的日志对象 return self.logger #错误日志的输出 def error_log(message): LoggerUtil().create_log().error(message) #raise Exception(message) #信息日志的输出 def logs(message): LoggerUtil().create_log().info(message) if __name__ == '__main__': error_log("qqq") logs("www")
每篇一句:
心里的念头一旦发芽,就已经控制不住了。