如何防止使用Python logging模块时日志文件被截断?

7 投票
1 回答
8865 浏览
提问于 2025-04-15 14:49

我需要用Python的日志模块把调试信息打印到一个文件里,像这样:

logging.debug(something)

但是这个文件被截断了(我猜是日志模块造成的),消息在我能看到之前就被删除了——我该怎么防止这种情况发生呢?

这是我的日志配置:

logging.basicConfig(
    level = logging.DEBUG,
    format = '%(asctime)s %(levelname)s %(message)s',
    filename = '/tmp/my-log.txt',
    filemode = 'w'
)

谢谢!

1 个回答

13

logging

如果你多次运行这个脚本,新的日志信息会被添加到文件中。如果你想每次都创建一个新文件,可以在基本配置中给 basicConfig() 传一个参数,设置 filemode 为 'w'。不过,与其自己去管理文件大小,不如使用一个叫做 RotatingFileHandler 的工具,这样更简单。

为了避免覆盖文件,你不应该把 filemode 设置为 'w',或者可以选择 将它设置为 'a'(其实默认就是这个设置)。

我觉得你只是把文件给覆盖掉了。

撰写回答