据我所知,限制 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等。
添加回答
举报
0/150
提交
取消