您可以使用backupCount
参数来实现这一点,如下所示.
文件大小旋转处理机
log_formatter = logging.Formatter("%(asctime)s %(levelname)-8s %(message)s",
datefmt="%Y-%m-%d %H:%M:%S") # your logging format
log_handler = RotatingFileHandler("logss/log.log", mode="a", maxBytes=1024, backupCount=10, encoding="utf-8")
log_handler.setFormatter(log_formatter)
logger = logging.getLogger()
logger.setLevel(logging.INFO) # set logging level
logger.addHandler(log_handler)
上述日志(log)处理程序将保留当前日志(log)文件(log.log)和最多10个历史日志(log)文件(因为backupCount=10).一旦当前日志(log)文件达到指定的大小(在本例中为MaxBytes=1024),它将创建一个新的日志(log)文件,并仅维护最后10个日志(log)文件,删除较旧的日志(log)文件.
时间旋转处理机
log_formatter = logging.Formatter("%(asctime)s %(levelname)-8s %(message)s", datefmt="%Y-%m-%d %H:%M:%S")
log_handler = TimedRotatingFileHandler("logs/log.log", when="M", interval=1, backupCount=10, encoding="utf-8")
log_handler.suffix = "%Y-%m-%d_%H-%M.log"
log_handler.setFormatter(log_formatter)
logger = logging.getLogger()
logger.setLevel(logging.INFO)
logger.addHandler(log_handler)
上述日志(log)处理程序将保留当前日志(log)文件(log.log)和最多10个历史日志(log)文件(因为backupCount=10).它将根据时间间隔when="M"
(每分钟轮换一次)、interval=1
(每分钟轮换一次)和backupCount=10(保留10个日志(log)文件)来轮换文件.这个时间段你可以根据你的要求改变它.