Python 有它自己的RotatingFileHandler
,它应该自动轮换日志文件。作为需要每隔几周/几个月轮换一次日志文件的 linux 应用程序的一部分,我想知道它是否与使用配置文件logrotate.d
和使用 a有什么不同WatchedFileHandler
。
它们的操作方式有什么不同吗?一种方法更安全、更有效还是被认为优于另一种方法?
Python 有它自己的RotatingFileHandler
,它应该自动轮换日志文件。作为需要每隔几周/几个月轮换一次日志文件的 linux 应用程序的一部分,我想知道它是否与使用配置文件logrotate.d
和使用 a有什么不同WatchedFileHandler
。
它们的操作方式有什么不同吗?一种方法更安全、更有效还是被认为优于另一种方法?
您的计划的目标受众是什么?
如果您正在创建一个桌面应用程序并且大多数用户不能阅读日志,您应该为他们处理它。不仅旋转,还删除旧的 - 你不想填满可怜的用户的硬盘!
另一方面,如果听众是经验丰富的 UNIX 系统管理员,您将不得不采取不同的方法。
系统管理员将需要您无法预料的功能。通过电子邮件发送它们,将它们写入仅附加存储,您可以命名。对于这些受众,最好是您的日志记录尽可能灵活。灵活(在 UNIX 中)意味着简单 - 所以只需写入文件并认为它已完成。
此外,系统管理员不想重新学习如何重新进行日志记录。即使你想提供这种特性,也要确保默认值在这个假设范围内是合理的。
最后。tdelaney 提出了一个重要的观点:标准FileHandler
并没有过多关注它正在写入的文件。您应该使用专门为此目的编写的WatchedFileHandler
RotatingFileHandler 允许日志文件增长到 N 大小,然后立即自动旋转到新文件。
logrotate.d 通常每天运行一次。如果您想限制日志文件的大小,logrotate.d 并不是最有用的,因为它只是定期运行。