为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

撒科打诨 2023-09-02 16:24:40
据我所知,限制 python 中的日志文件大小可以通过RotatingFileHandlerand it's attribute来完成maxBytes。为了测试这一点,我编写了以下脚本:import loggingfrom logging.handlers import RotatingFileHandlerlogger = logging.getLogger("Rotating Log")logger.setLevel(logging.INFO)# add a rotating handlerhandler = RotatingFileHandler("test.log", maxBytes=1)logger.addHandler(handler)x = 0while 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,但结果保持不变。日志文件不断变大
查看完整描述

1 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

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


查看完整回答
反对 回复 2023-09-02
  • 1 回答
  • 0 关注
  • 199 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信