带有RotatingFileHandler的Python 3记录器超出了maxBytes限制
我使用以下代码限制日志文件的大小(最简单的示例):带有RotatingFileHandler的Python 3记录器超出了maxBytes限制,python,logging,limit,filesize,filehandler,Python,Logging,Limit,Filesize,Filehandler,我使用以下代码限制日志文件的大小(最简单的示例): 但是,文件大小超出了1MB的限制,并保持日志记录。我看不出我做错了什么。有没有办法选择不同的参数来正确限制日志文件的大小?好的,看来我找到了解决问题的方法: import logging from logging.handlers import RotatingFileHandler # Set up logfile and message logging. logger = logging.getLogger("Logger") logge
但是,文件大小超出了1MB的限制,并保持日志记录。我看不出我做错了什么。有没有办法选择不同的参数来正确限制日志文件的大小?好的,看来我找到了解决问题的方法:
import logging
from logging.handlers import RotatingFileHandler
# Set up logfile and message logging.
logger = logging.getLogger("Logger")
logger.setLevel(logging.ERROR)
# Create the rotating file handler. Limit the size to 1000000Bytes ~ 1MB .
handler = RotatingFileHandler("test.log", mode='a', maxBytes=1000000, backupCount=1, encoding='utf-8', delay=0)
handler.setLevel(logging.ERROR)
# Create a formatter.
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# Add handler and formatter.
handler.setFormatter(formatter)
logger.addHandler(handler)
for l in range(1000):
logger.error("test" * 1000)
我只是错过了backupCount=1参数。但是,这将创建两个文件test.log和test.log.1(正确的文件旋转似乎需要两个文件)。这不是一个完美的解决方案,因为我只希望有一个文件,但它对我来说很好。这是一篇老文章,但我认为你真正想要的是一个普通的文件处理程序。文件处理程序的设计目的是备份旧日志并将其重命名为log.1、log.2等,有关详细信息,请参阅同一链接中的文档
import logging
from logging.handlers import RotatingFileHandler
# Set up logfile and message logging.
logger = logging.getLogger("Logger")
logger.setLevel(logging.ERROR)
# Create the rotating file handler. Limit the size to 1000000Bytes ~ 1MB .
handler = RotatingFileHandler("test.log", mode='a', maxBytes=1000000, backupCount=1, encoding='utf-8', delay=0)
handler.setLevel(logging.ERROR)
# Create a formatter.
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# Add handler and formatter.
handler.setFormatter(formatter)
logger.addHandler(handler)
for l in range(1000):
logger.error("test" * 1000)