轮换文件名中包含时间戳的日志文件

轮换文件名中包含时间戳的日志文件

我有一个日志目录,我的应用程序会将数据写入其中。它会创建一个如下日志文件:

2015-01-22-10-full-activity.log
2015-01-22-11-full-activity.log
2015-01-22-12-full-activity.log
2015-01-22-13-full-activity.log

我想压缩除最新文件之外的所有文件并删除任何超过 3 天的文件。

我以为 logrotate 可以为我做到这一点,但我无法理解,可能是因为我在活动日志的名称中包含了时间。

有任何想法吗?

答案1

如果您已经创建了名称中带有日期的文件,那么 logrotate 就不是答案;它基于应用程序始终写入同一个日志文件(例如 /var/log/app/output.log)的理念,然后 logrotate 负责重命名/压缩文件并告诉应用程序重新打开原始目标文件。

在这种情况下,也许有一对使用“find”和-mtime 的 cron 作业,例如:

1 0 * * * root 查找 /path/to/logs/*.log -mtime +1 -daystart -exec gzip {} \;

2 0 * * * root 查找 /path/to/logs/*.log.gz -mtime +3 -daystart -delete

您可能希望摆弄 -mtime 上的数字并使用 -daystart(或不)以获得您想要的精确结果(取决于您想如何计算“天数”等)。

相关内容