据我所知,使用 RotatingFileHandler
和它的属性 maxBytes
可以限制python中日志文件的大小。
为了测试这个功能,我编写了以下脚本:
import logging
from logging.handlers import RotatingFileHandler
logger = logging.getLogger("Rotating Log")
logger.setLevel(logging.INFO)
# add a rotating handler
handler = RotatingFileHandler("test.log", maxBytes=1)
logger.addHandler(handler)
x = 0
while True:
x += 1
logger.info(x)
尽管日志文件不应超过1字节,但很快就会上升到数兆字节。我该如何限制它?不幸的是文档非常糟糕。我还想知道如何确保每次重新运行python脚本时,日志文件都被清除并重新开始记录,但是在文档中它只是简单地说了一下。
class logging.handlers.RotatingFileHandler(filename, mode='a', maxBytes=0, backupCount=0, encoding=None, delay=False)
If mode is not specified, 'a' is used.
然而,它并没有说明除了'a'之外还有哪些选项可用。
总结以下问题:
- 如何将日志文件大小限制为10兆字节
- 如何确保在运行脚本时启动新的日志文件,而不是附加旧的日志文件
编辑:我尝试使用maxBytes = 1000000,但结果仍然相同。 日志文件仍然在变大。
maxBytes = 1
能够工作。记录是基于行的,而不是基于字符的。这可能仅仅是一个无效的设置,因为几乎任何日志消息都已经超过了最大大小。如果您设置一个更合理的maxBytes
值,您是否会得到相同的行为? - larsks