在Python 3+中,如果我记录的消息多于配置了RotatingFileHandler的消息会发生什么?

时间:2019-07-09 14:07:52

标签: python-3.x logging

在Python 3+中,我无法理解RotatingFileHandler。在this example中,用户显示的RotatingFileHandler的backupCount为10,最大字节数为2000。这将创建11个日志文件,每个日志文件最多包含2000个字节(总共22000个字节)。如果我在许多不同的日志消息中记录的总字节数超过22000,会发生什么情况?日志文件会被覆盖吗?

1 个答案:

答案 0 :(得分:1)

发生的事情是,它开始将日志信息保存到文件中。当日志文件的大小超过maxBytes时,将归档当前日志,并将新的日志信息附加到新的日志文件中。可能存在最大数量的backupCount个日志档案,并且仅在数量超过backupCount时才从最早的档案中删除档案。

所有这些自动为您发生。


编辑

我将尝试绘制正在发生的事情:

您从开始:

app.log

app.log太大时:

app.log  <-- Created fresh
app.log.1  <-- renamed from old app.log

这一直持续到您拥有.number指定的backupCount个文件为止:

app.log  <-- You always append data HERE
app.log.1  <-- renamed from old app.log
app.log.2  <-- renamed from old app.log.1
app.log.3  <-- renamed from old app.log.2
app.log.4  <-- renamed from old app.log.3
app.log.5  <-- renamed from old app.log.4

app.log再次过大并且已经有5个备份文件时:

app.log  <-- You always append data HERE
app.log.1  <-- renamed from old app.log
app.log.2  <-- renamed from old app.log.1
app.log.3  <-- renamed from old app.log.2
app.log.4  <-- renamed from old app.log.3
app.log.5  <-- renamed from old app.log.4
-- old app.log.5 gets deleted --

查看documentation以获得更多详细信息。