Logging

使用文件名中的時間戳輪換日誌文件

  • January 22, 2015

我有一個我的應用程序寫入的日誌目錄。它會創建一個這樣的日誌文件:

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 可以為我做到這一點,但我無法理解它,可能是因為我正在用名稱中的時間命名我的活動日誌。

有任何想法嗎?

如果您已經在創建名稱中包含日期的文件,則 logrotate 不是答案;它基於應用程序總是寫入同一個日誌文件(例如 /var/log/app/output.log)的想法,然後 logrotate 負責重命名/壓縮文件並告訴應用程序重新打開再次原始目標文件。

在這種情況下,可能是一對使用“find”和 -mtime 的 cron 作業,例如:

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

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

您可能希望擺弄 -mtime 上的數字並使用 -daystart (或不使用)來獲得您想要的精確結果(取決於您要如何計算“天數”等)

引用自:https://serverfault.com/questions/661567