将 logrorate 与复杂的日志目录结合使用

将 logrorate 与复杂的日志目录结合使用

应用程序有一个日志目录,其中创建了大量日志输出。该日志目录中的文件结构如下所示:

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,但我不这么认为,我不会浪费时间试图弄清楚它。

相关内容