完整的日志管理(Python)
类似的问题之前也有人问过,但我还没找到一个简单易行的方法。
我们有一些不同类型的应用日志,这些日志占用了很多空间,还带来了其他一些不必要的问题。我想写一个监控脚本(比如压缩特定大小的文件、移动它们、监控它们等等)来进行维护。希望能找到一个简单的解决方案(比如用什么工具),最好是用Python,或者也可以用一个简单的Shell脚本。
谢谢。
2 个回答
0
使用 logrotate 来帮你处理这个问题。
要记住,有一些情况是它可能无法正常工作的,比如如果日志应用程序一直保持日志文件打开状态,并且在文件被删除并重新创建后无法继续使用这个文件。
这些年我遇到过几个这样的应用,但即使是它们,你也可以配置logrotate,在轮换日志时重新启动它们。
7
在大多数Gnu/Linux系统上,处理这个问题的“标准”方法是使用logrotate。我在我的Debian机器上看到有一个/etc/logrotate.conf
文件,里面详细说明了哪些文件需要轮换,以及轮换的频率。这是通过每天的定时任务来触发的。我建议你使用这个方法。
如果你想让你的应用程序自己来处理这个(其实这样做挺麻烦的,因为这不是它的主要工作),你可以考虑写一个自定义的日志处理器。使用RotatingFileHandler(或TimedRotatingFileHandler)可能会有效,但你也可以自己写一个。
大多数系统默认会自动轮换由syslog生成的日志文件。你可以考虑使用SysLogHandler,并将日志记录到syslog(无论你的应用程序使用什么语言),这样系统基础设施就会自动为你处理这些事情。