RHEL / CentOS 設定 Logrotate 實現記錄檔輪替

在 Linux 如果用套件管理工具 (例如 yum, dnf, apt-get) 安裝套件, 一般會設定好 logrotate 做記錄檔輪替, 但如果套件是自行編譯安裝, 或者是自行開發的系統 (例如 Shell Script), 除了可以自行編譯記錄檔輸替的功能外, 也可以用 Logrotate 實現。

Logrotate 的設定檔是 /etc/logrotate.conf, 用作設定 Logrotate 的預設參數, 而 /etc/logrotate.d/ 目錄下建立需要輪替的記錄檔, 每項服務一個檔案, 這樣對日後維護及管理也會較方便。

我的 Email Server 內安裝的 qmailadmin, 安裝了記錄使用者登入及其他活動的 patch, 檔案放在 /var/log/qmailadmin.log, 以下會用 Logrorate 設定記錄檔輪替作為示範例子, 使用者需要按您的記錄檔位置作出修改。

先建立一個新的 Logrotate 設定檔:

# vi /etc/logrotate.d/qmailadmin

加入以下內容:

以下是上面設定項目的意思:


create – 建立新檔案, owner 及 group 是 root, 權限是 600.
daily – 每天檢查一次記錄檔.
missingok – 如果記錄檔不存在不會輸出錯誤.
notifempty – 如果記錄檔是空白, 不會做輪替.
compress – 使用 gzip 壓縮舊記錄檔.
size – 如果記錄檔大過 10MB 便會做輪替.

儲存設定檔後, Logrotate 便會生效, 以下可以對 Logrotate 進行測試, 建立一個測試用的記錄檔:

# echo “Logrotate Testing” > /var/log/qmailadmin.log

由於上面的測試記錄檔只有一行資料, 未達到設定的 10MB 輪替容量, 可以在 logrotate 後面加上 “-f” 參數進行測試, “-f” 代表不論檔案大小均會強制輸替, 但請留意, 下面指令會對 /etc/logrotate.d/ 目錄下所有設定檔的項目進行輪替:

# logrotate -f /var/log/qmailadmin.log

現在可以查看 /var/log 目錄, 應該會有 /var/log/qmailadmin-yyyymmdd.gz 格式的舊檔案, 而 /var/log/qmailadmin 則已經清空, 這樣也代表 Logrotate 設定成功。




Leave a Reply