限制 Python 日志记录中的日志文件大小

据我所知,限制 python 中的日志文件大小可以通过RotatingFileHandlerand it's attribute来完成maxBytes。


为了测试这一点,我编写了以下脚本:


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 MB

如果运行脚本,如何确保启动新的日志文件,而不是附加旧的日志文件

编辑:我尝试使用 maxBytes=1000000,但结果保持不变。日志文件不断变大


撒科打诨
浏览 200回答 1
1回答

蛊毒传说

您可以检查RotatingFileHandler类的第二部分每当当前日志文件的长度接近 maxBytes 时,就会发生翻转;但如果 maxBytes 或 backupCount 中的任何一个为零,则永远不会发生翻转,因此您通常希望将 backupCount 设置为至少 1,并且 maxBytes 不为零。看来您没有设置该backupCount值。当 backupCount 不为零时,系统将通过在文件名后附加扩展名“.1”、“.2”等来保存旧日志文件。例如,如果 backupCount 为 5,基本文件名为 app.log,您将获得 app.log、app.log.1、app.log.2,直到 app.log.5。写入的文件始终是 app.log。当这个文件填满后,它被关闭并重命名为app.log.1,如果文件app.log.1、app.log.2等存在,那么它们将被重命名为app.log.2、app.log.1、app.log.1、app.log.1、app.log.1、app.log.1、app.log.1、app.log.1、app.log.1、app.log.1、app.log.1、app.log.1、app.log.1、app.log.1、app.log.1、app.log.1、app.log.1、app.log.2分别为log.3等。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python