gpt4 book ai didi

python - 为什么 TimedRotatingFileHandler 不删除旧文件?

转载 作者:行者123 更新时间:2023-12-01 13:15:50 33 4
gpt4 key购买 nike

我正在使用 TimedRotatingFileHandler创建我的日志。
我希望我的日志文件每分钟创建一次,最多保留 2 个日志文件并删除旧的。这是示例代码:

import logging
import logging.handlers
import datetime

logger = logging.getLogger('MyLogger')
logger.setLevel(logging.DEBUG)

handler = logging.handlers.TimedRotatingFileHandler(
"logs/{:%H-%M}.log".format(datetime.datetime.now()),
when="M",
backupCount=2)

logger.addHandler(handler)
logger.debug("PLEASE DELETE PREVIOUS FILES")

如果我多次运行此代码(间隔一分钟),我会在我的日志目录中得到多个文件,如下所示:
21-01.log
21-02.log
21-03.log
...

这对我来说似乎很奇怪,因为我设置了 backupCount=2这表示最多应保存 2 个文件,并应删除较旧的文件。但是,当我在日志文件夹中使用 2 个或更多文件启动我的应用程序时,不会删除旧文件。

为什么 TimedRotatingFileHandler 不删除旧文件?
有什么办法可以设置 TimedRotatingFileHandler 来删除旧文件?

最佳答案

就像您在 TimedRotatingFileHandler 中看到的一样文档,您的日志文件名应该相同才能正确获得旋转系统。

在您的情况下,因为您自己附加了 dateTime 信息,所以每次的日志文件名都不同,因此您可以观察结果。

因此,在您的源代码中,您只需要修改日志文件名:

handler = logging.handlers.TimedRotatingFileHandler(
"logs/MyLog",
when="M",
backupCount=2)

如果你想挑战它,你可以改变 when到“S”(秒),并检查旋转是否正常。

例如,它会自动生成这样的文件:
> MyLog
> MyLog.2019-07-08_11-36-53
> MyLog.2019-07-08_11-36-58

如果您需要更多信息,请不要犹豫。

关于python - 为什么 TimedRotatingFileHandler 不删除旧文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55170348/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com