
應用程式有一個日誌目錄,其中創建了大量日誌輸出。該日誌目錄中的檔案結構如下所示:
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
,但我不這麼認為,我不會浪費時間試圖弄清楚它。