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

俗气

据我所知,可以使用RotatingFileHandlerand及其attribute来限制python中的日志文件大小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”以外还有哪些其他选项。

总结问题

  1. 如何将日志文件的大小限制为10 MB
  2. 如果脚本运行,如何确保启动了新的日志文件,而不是附加旧的日志文件

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

迪维克

您可以检查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.3等。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章