通过自定log类,能把执行过程记录到日志,方便检查和重现问题。
log类介绍:
每次调用log函数,会根据绝对路径生成日志文件在logs目录下面(在被调用的时候日志会输出到指定的文件),日志文件的格式是年月日.log;
可以根据自己的需求定义日志输出记录的格式:
formatter = logging.Formatter('%(asctime)s - %(filename)s - %(funcName)s - %(levelname)s: %(message)s')
目录文件:
import logging
import os
import timeclass Logger(object):def __init__(self):self.logger = logging.getLogger()self.logger.setLevel(logging.DEBUG)# 定义log文件名字,使用绝对路径存放log文件rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))log_path = os.path.split(os.path.split(os.path.realpath(__file__))[0])[0] + '\\logs\\'log_name = log_path + rq + '.log'# 创建一个handler,用于写入日志文件handler = logging.FileHandler(log_name, mode='a+', encoding='utf-8')handler.setLevel(logging.INFO)# 再创建一个handler,用于输出到控制台console = logging.StreamHandler()console.setLevel(logging.INFO)# 定义handler的输出格式formatter = logging.Formatter('%(asctime)s - %(filename)s - %(funcName)s - %(levelname)s: %(message)s')handler.setFormatter(formatter)console.setFormatter(formatter)# 给logger添加handlerself.logger.addHandler(handler)self.logger.addHandler(console)def getLog(self):return self.loggerlog = Logger().getLog()if __name__ == "__main__":log.info('test')
运行的结果: