Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有RotatingFileHandler的Python 3记录器超出了maxBytes限制_Python_Logging_Limit_Filesize_Filehandler - Fatal编程技术网

带有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)