import logging
import os
import sys
import time
from logging.handlers import TimedRotatingFileHandler
# 定义默认日志格式
"""
%(asctime)s :日志记录的时间
%(levelname)s :日志级别
%(message)s :日志消息的内容
%(name)s :日志记录器的名称
%(filename)s :源代码文件名称
%(lineno)d :源代码文件中的行号
%(funcName)s :调用日志记录的函数名
"""
LOG_FORMAT = "%(asctime)s %(thread)d %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s"
# 定义日志全局记录级别: DEBUG < INFO < WARNING < ERROR < CRITICAL
WRITE_LEVEL = logging.DEBUG
# 定义输出控制台日志级别
CONSOLE_LEVEL = logging.INFO
# 定义输出文件日志级别
FILE_LEVEL = logging.INFO
# 日志文件存放路径,如不需要路径,填写 None
FILE_PATH = "logs"
# 日志文件名称
LOG_FILE_NAME = "mylog.log"
# 定义默认日志切割的时间单位,比如 'S'(秒)、'M'(分)、'H'(小时)、'D'(天)等
WHEN = "M"
# 定义默认日志文件切割的时间间隔,例如当 when='H' 且 interval=1 时,表示每隔一个小时进行一次切割,并生成一个新的日志文件
INTERVAL = 1
# 定义默认保留旧日志文件的个数(如果超过这个数量,则会自动删除最早的日志文件),默认值为 0,表示不自动删除旧日志文件
BACKUPCOUNT = 0
def create_logger(logger_name=None):
"""日志记录模块"""
# 获取当前脚本所在的目录路径。该方法获取不正确时,使用方法二:os.path.realpath(sys.argv[0])
script_dir = os.path.dirname(os.path.abspath(sys.argv[0]))
if FILE_PATH:
# 拼接日志文件完整路径
log_filename = os.path.join(script_dir, FILE_PATH, LOG_FILE_NAME)
# 如果指定路径不存在,则尝试创建路径
if not os.path.exists(os.path.join(script_dir, FILE_PATH)):
os.makedirs(os.path.join(script_dir, FILE_PATH))
else:
# 拼接日志文件完整路径
log_filename = os.path.join(script_dir, LOG_FILE_NAME)
# 创建 Logger 实例,如果传入 logger_name 参数,则使用该名称创建 Logger,否则使用根 Logger
logger = logging.getLogger(logger_name)
logger.setLevel(WRITE_LEVEL)
# 配置控制台输出
console_handler = logging.StreamHandler() # 创建 StreamHandler 实例,即将日志输出到控制台的处理器
console_handler.setLevel(CONSOLE_LEVEL)
console_handler.setFormatter(logging.Formatter(LOG_FORMAT))
logger.addHandler(console_handler)
# 配置文件输出
file_handler = TimedRotatingFileHandler(log_filename,
when=WHEN,
interval=INTERVAL,
backupCount=BACKUPCOUNT,
encoding='utf-8') # 创建 TimedRotatingFileHandler 实例,即将日志输出到文件的处理器
file_handler.setLevel(FILE_LEVEL)
file_handler.setFormatter(logging.Formatter(LOG_FORMAT))
logger.addHandler(file_handler)
return logger
python 日志按日期分割
最新推荐文章于 2024-05-26 21:37:51 发布
![](https://img-home.csdnimg.cn/images/20240611030827.png)