完整的日志管理(Python)

0 投票
2 回答
1496 浏览
提问于 2025-04-16 18:39

类似的问题之前也有人问过,但我还没找到一个简单易行的方法。

我们有一些不同类型的应用日志,这些日志占用了很多空间,还带来了其他一些不必要的问题。我想写一个监控脚本(比如压缩特定大小的文件、移动它们、监控它们等等)来进行维护。希望能找到一个简单的解决方案(比如用什么工具),最好是用Python,或者也可以用一个简单的Shell脚本。

谢谢。

2 个回答

0

使用 logrotate 来帮你处理这个问题。

要记住,有一些情况是它可能无法正常工作的,比如如果日志应用程序一直保持日志文件打开状态,并且在文件被删除并重新创建后无法继续使用这个文件。

这些年我遇到过几个这样的应用,但即使是它们,你也可以配置logrotate,在轮换日志时重新启动它们。

7

在大多数Gnu/Linux系统上,处理这个问题的“标准”方法是使用logrotate。我在我的Debian机器上看到有一个/etc/logrotate.conf文件,里面详细说明了哪些文件需要轮换,以及轮换的频率。这是通过每天的定时任务来触发的。我建议你使用这个方法。

如果你想让你的应用程序自己来处理这个(其实这样做挺麻烦的,因为这不是它的主要工作),你可以考虑写一个自定义的日志处理器。使用RotatingFileHandler(或TimedRotatingFileHandler)可能会有效,但你也可以自己写一个。

大多数系统默认会自动轮换由syslog生成的日志文件。你可以考虑使用SysLogHandler,并将日志记录到syslog(无论你的应用程序使用什么语言),这样系统基础设施就会自动为你处理这些事情。

撰写回答