gpt4 book ai didi

带有 RotatingFileHandler 的 Python 3 记录器超过 maxBytes 限制

转载 作者:行者123 更新时间:2023-12-05 02:18:01 24 4
gpt4 key购买 nike

我正在使用以下代码来限制日志文件的大小(最小示例):

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, encoding=None, 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)

但是文件大小超过了 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(正确的文件轮换似乎需要 2 个文件)。这不是完美的解决方案,因为我只想拥有一个文件,但它很适合我。

关于带有 RotatingFileHandler 的 Python 3 记录器超过 maxBytes 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46401571/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com