class TimedRotatingFileSuffixLogHandler(TimedRotatingFileHandler):
"""
对历史文档归档时会进行判断
设计思想:
1. 继承 TimeRotatingFilHandler, 该handler实现了文件按照日期维度归档日志
2. 原归档日志名如下: test.log.日期
3. 这里对归档路径进行处理
4. 以 .log. 分隔日志路径
5. 按分割出来的日期创建归档路径
6. 重新拼接日志归档路径
"""
def rotate(self, source, dest):
# 将日志文件名进行分隔, 如下: [filename, suffix time]
dirName, baseName = os.path.split(dest)
pre_path, suf_time = baseName.split('.log.')
# 以时间为维度, 创建对应的新日志目录
log_dir_path = os.path.join(dirName, f'{suf_time}/')
os.makedirs(log_dir_path, exist_ok=True)
n_dest = f'{log_dir_path}/{pre_path}.log'
super().rotate(source, n_dest)
# 使用方式
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'simpler': {
'format': '[%(asctime)s]\t%(message)s'
}
},
'handlers': {
'api_sdk': {
'level': 'INFO',
'class': 'core_ext.logging.handlers.TimedRotatingFileSuffixLogHandler', # 保存到文件,自动切
'filename': os.path.join(BASE_LOG_DIR, "Api.log"), # 日志文件
# 这里决定你的日志文件归档维度, 具体有什么参数可以参考
# logging.handlers.TimedRotatingFileHandler 的 __init__方法
'when': 'D',
'formatter': 'simpler',
'encoding': 'utf-8',
},
}
Django-logging Handler 按日期创建文件夹
最新推荐文章于 2024-06-04 10:58:06 发布