Python 日志轮换的 RotatingFileHandler 和 logrotate.d + WatchedFileHandler 之间有区别吗?

Is there a difference between RotatingFileHandler and logrotate.d + WatchedFileHandler for Python log rotation?

Python 有它自己的 RotatingFileHandler,它应该自动轮换日志文件。作为 linux 应用程序的一部分,它需要每隔 weeks/months 轮换它的日志文件,我想知道它与 logrotate.d 中的配置文件和使用 WatchedFileHandler 代替。

它们的运作方式有什么不同吗?一种方法是否更安全、更有效或被认为优于另一种方法?

RotatingFileHandler 允许日志文件增长到大小 N,然后立即自动旋转到新文件。

logrotate.d 通常每天运行一次。如果您想限制日志文件的大小,logrotate.d 不是最有用的,因为它只定期运行。

您的节目的目标受众是什么?

如果你正在创建一个桌面应用程序并且不能期望大多数用户阅读日志,你应该为他们处理它。不仅轮换,而且删除旧的 - 你不想填满可怜的用户的硬盘!

另一方面,如果听众是经验丰富的 UNIX 系统管理员,您将不得不采取不同的方法。

系统管理员将需要您无法预料的功能。 通过电子邮件发送它们,将它们写入仅附加存储,随您便。对于这些受众,您的日志记录最好尽可能灵活。灵活(在 UNIX 中)意味着简单 - 所以只需写入文件并认为它已完成。

此外,系统管理员不想重新学习如何重新进行日志记录。即使你想提供这种功能,也要确保默认值在这个假设内是合理的。

终于。 tdelaney 提出了一个重要的观点:标准 FileHandler 不太注意它正在写入的文件。您应该使用专门为此目的编写的 WatchedFileHandler