""" 日志生成步骤: 1,设置存放日志的目录,不存在则创建。 2,设置日志的级别’DE_BUG‘,’INFO‘,’WARING‘,’ERROR‘,CRITICAL’. 3,设置写入日志的格式‘[%(asctime)s][%(threadName)s][line:%(lineno)d] %(levelname)s: %(message)s’ 4,设置控制台输出 5,设置日志文件名 6,确保每日生成不同的日志文件,且能够区分生成时间,可用logging.handlers.TimeRotatingFileHandler进行处理,使用之前先进行导入 7,将日志对象添加到logger里 8,进行调用即可get_logger(name="test") 9,日期文件全部进去根目录的autotest_sc_log目录下,将日志文件与项目分离,后续可以使用filebet进行日志采集,进入日志云查询日志 """ import logging import os import time from logging.handlers import TimedRotatingFileHandler class Log(object): def __init__(self): # 获取日志器 self.logger = logging.getLogger() # 先设置日志的的基础显示等级 self.logger.setLevel(logging.INFO) # 设置日志的格式‘[%(asctime)s][%(threadName)s][line:%(lineno)d] %(levelname)s: %(message)s’ formatter = '[%(asctime)s] [proc:%(process)d] [%(threadName)s:%(thread)d] [%(filename)s::%(funcName)s:line_%(lineno)d] %(levelname)s: %(message)s' log_formatter = logging.Formatter(formatter) # 设置存放日志的目录,不存在则创建。 # 此时目录结构不要随便更改,因为直接与路径挂钩 # 直接拼接目录 abs_path = os.path.abspath(__file__) # 往上一级到common common_dir = os.path.dirname(abs_path) # 往上一级到项目目录 project_dir = os.path.dirname(common_dir) # 开始拼接日志目录 log_dir = os.path.join(project_dir, 'log') # 若该目录不存在则创建该目录 if not os.path.exists(log_dir): os.mkdir(log_dir) # 设置日志文件名 log_file_name = time.strftime('%Y-%m-%d', time.localtime(time.time())) + '.log' ''' 实例化TimedRotatingFileHandler filename:日志文件名。 when:日志文件按什么切分。'S'-秒;'M'-分钟;'H'-小时;'D'-天;'W'-周 这里需要注意,如果选择D-天,那么这个不是严格意义上的‘天’,是从你项目启动开始,过了24小时,才会重新创建一个新的日志文件,如果 项目重启,这个时间就会重置。选择‘MIDNIGHT’是指过了凌晨12点就会创建新的日志。 interval:时间间隔 backupCount:是保留日志的个数。默认是0,不会自动删除,如何超过这个数就会自动删除 ''' # 创建文件日志与控制台日志处理器 file_handler = TimedRotatingFileHandler(filename=os.path.join(log_dir, log_file_name), when='MIDNIGHT', interval=1, backupCount=3, encoding='utf-8') console_handler = logging.StreamHandler() # 设置文件日志与控制台日志格式 file_handler.setFormatter(log_formatter) console_handler.setFormatter(log_formatter) # 设置文件日志与控制台日志基础等级 # 设置日志的级别’DE_BUG‘,’INFO‘,’WARING‘,’ERROR‘,CRITICAL’. file_handler.setLevel(logging.INFO) console_handler.setLevel(logging.INFO) # 添加日志处理器,文件日志与控制台日志 self.logger.addHandler(file_handler) self.logger.addHandler(console_handler) # 实例化,后面直接引入使用 logger = Log().logger