An error occurred while loading the file. Please try again.
An error occurred while loading the file. Please try again.
An error occurred while loading the file. Please try again.
-
17322369953 authoreda3601612
"""
日志生成步骤:
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)
7172737475767778
# 添加日志处理器,文件日志与控制台日志
self.logger.addHandler(file_handler)
self.logger.addHandler(console_handler)
# 实例化,后面直接引入使用
logger = Log().logger