应用程序有一个日志目录,其中创建了大量日志输出。该日志目录中的文件结构如下所示:
localhost:/var/log/myapp # ls
appClient22334.a appClient22336.a appClient22338.a
appClient22334.b appClient22336.b appClient22338.b
appClient22334.c appClient22336.c appClient22338.c
appClient22335.a appClient22337.a appClient22339.a
appClient22335.b appClient22337.b appClient22339.b
appClient22335.c appClient22337.c appClient22339.c
每天,该应用程序都会生成数百个这样的文件,这些文件都需要存储。数字递增。
对于大多数目的,我每天都使用 logrotate 来存储和压缩日志文件,但在这种情况下,我不知道如何做到这一点。
理想的解决方案是有类似的东西
appClient.20120324.gzip
appClient.20120325.gzip
appClient.20120326.gzip
如果可以在使用 logrotate 时完成(也许是一种聪明的使用方法prerotate
?),或者如果编写特定的 bash 脚本更快/更容易,你们中的任何人都可以将我推向正确的方向吗?
答案1
为了让事情变得简单,我会运行一个每日 cron 作业,将昨天的日志文件连接到一个文件中(例如昨天.log),并在成功时删除它们,然后运行 logrotate 来(重新)命名并压缩该文件。您也许可以使用强制 logrotate 来完成整个任务sharedscripts
,但我不这么认为,我不会浪费时间试图弄清楚它。