class TimedRotatingFileSuffixLogHandler(TimedRotatingFileHandler):
"""
对历史文档归档时会进行判断
"""
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',
},
}