Python中,通过继承TimedRotatingFileHandler
并重写其滚动逻辑,可以实现同时按时间和文件大小分割日志的双重分割。具体实现方法:
一、核心实现思路
- 继承扩展:创建自定义处理器类,继承
TimedRotatingFileHandler
。 - 双重条件判断:重写
shouldRollover()
方法,同时检查时间间隔和文件大小。 - 文件名兼容:保留时间后缀格式,同时支持按序号备份。
二、代码实现
import logging
import os
import time
from logging.handlers import TimedRotatingFileHandler
class TimeSizeRotatingFileHandler(TimedRotatingFileHandler):
def __init__(self, filename, maxBytes=0, when='h', interval=1, backupCount=0, encoding=None):
super().__init__(filename, when, interval, backupCount, encoding)
self