假设我使用RotatingFileHandler创建了一个使用python的旋转文件记录器。我将文件数量设置为10,每个文件大小设置为1MB。我的问题与旋转是如何发生的有关。旋转是通过将所有10个文件保持打开并确保每个文件的内容在添加到最新文件时被修改而发生的吗?如果是这样,那么至少应该有10个始终处于打开状态的文件描述符。
假设每个文件有100 KB块行,所以每个文件只有10行。因此,当通过这个旋转的日志处理程序插入另一行( 100 KB)时,不是将每个文件的最后一行放在下一个文件的顶部(从新到旧)吗?所以让所有的文件描述符一直打开是有意义的,不是吗?
发布于 2015-01-23 14:13:53
处理程序只有一个打开的文件。其他文件在旋转时被重命名。
首先,关闭当前文件。然后,旋转按相反顺序重命名文件;因此,扩展名为.9的文件首先重命名为.10,如果存在已有的.10,则删除该文件。然后.8被重命名为.9等。最后,“current”文件被重命名为附加.1扩展名。
根据delay标志,在结束时打开一个新文件,无论是在旋转时还是在写入下一个日志条目时。
这一切都是 documentation
当大小即将超过时,该文件将被关闭,一个新文件将被静默地打开以供输出。..。如果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.3等。
https://stackoverflow.com/questions/28111773
复制相似问题