Python: Log模块的使用

it2023-12-02  59

该log方法可以按照系统日期创建文件夹,当天的log会存放在当天日期的文件夹中,便于管理和查看log日志;

import logging,os,time #此处的log_path是log文件夹路径,我这里是从其他py文件直接导入的 from config.path import log_path class Get_log(): def __init__(self): # 返回当前系统时间,年月日为单位 day_time = time.strftime('%Y%m%d',time.localtime(time.time())) # 文件夹路径及名称:以年月日命名 dir_path = os.path.join(log_path,day_time) # 判断该路径下该文件夹是否存在,返回True或者Flash isExists = os.path.exists(dir_path) # 如果不存在该目录就进行创建,否则就输出已存在该目录 if not isExists: os.makedirs(dir_path) print("创建目录:{0},成功".format(dir_path)) else: print("目录:{0}已存在".format(dir_path)) # 创建一个记录器 self.log = logging.getLogger() # 设置记录器记录的BUG等级 self.log.setLevel(level=logging.INFO) # 定义一个格式化输出的格式 self.formatter = logging.Formatter('%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s') # log保存的路径及格式,每运行一次就根据时间创建一个log文件,会产生较多log文件 self.log_path = os.path.join(dir_path,'%s.log'%time.strftime('%Y-%m-%d %H_%M_%S')) # 写死log文件名,直接在原本的基础上添加新的log数据 # self.log_path = os.path.join(log_path,"log_result.log") # 私有化,外部无法调用 def __get_log(self,level,message): #创建一个handler,处理器,有FileHandler和StremaHandler,分别输出log到文件或者控制台 fh = logging.FileHandler(self.log_path,encoding="utf-8") #设置handler的输出等级 fh.setLevel(logging.INFO) #设置handler的输出格式 fh.setFormatter(self.formatter) #把handler添加到记录器 self.log.addHandler(fh) #创建一个输出log信息到控制台的StreamHandler sh = logging.StreamHandler() sh.setLevel(logging.INFO) sh.setFormatter(self.formatter) # 把这个处理器也添加到记录器中,一个记录器可以存在多个处理器,这样log文件记录的同时屏幕也会输出log信息 self.log.addHandler(sh) #判断并输出对应的log信息 if level == "debug": self.log.debug(message) elif level == "info": self.log.info(message) elif level == "warning": self.log.warning(message) elif level == "error": self.log.error(message) elif level == "critical": self.log.critical(message) # 调用后需要移除处理器,否则会导致执行多个用例后输出重复的问题 self.log.removeHandler(sh) self.log.removeHandler(fh) #关闭log文件 fh.close() # 创建对应的log输出函数 def log_debug(self,message): self.__get_log("debug",message) def log_info(self,message): self.__get_log("info",message) def log_warning(self,message): self.__get_log("warning",message) def log_error(self,message): self.__get_log("error",message) def log_critical(self,message): self.__get_log("critical",message) if __name__ == "__main__": Get_log().log_info("测试info")
最新回复(0)