Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux logrotate 切割 Tomcat catalina.out 日誌:每日輪轉、保留 5 份、壓縮、copytruncate 不重啟應用

編輯:關於 Linux

Tomcat catalina.out 會無限增長佔滿磁碟。logrotate 透過 copytruncate 在不重啟 Tomcat、不中斷寫入的前提下完成日誌切割、壓縮、保留。本文給出生產環境就緒的設定檔與驗證步驟。

logrotate 設定

問題現狀


# ls -lh /usr/local/tomcat/logs/catalina.out
-rw-r--r-- 1 www www 14M Aug 28 15:55 catalina.out

建立 logrotate 設定檔


# /etc/logrotate.d/tomcat
/usr/local/tomcat/logs/catalina.out {
    daily                    # 每日輪轉
    rotate 5                 # 保留 5 份輪轉檔
    missingok                # 檔案不存在不報錯
    dateext                  # 使用日期後綴 (catalina.out-20240520)
    compress                 # 壓縮舊檔 (gzip)
    notifempty               # 空檔不輪轉
    copytruncate             # 關鍵:複製後清空原檔,不需重啟 Tomcat
    # create 640 www www      # 若用 create 模式需重啟 Tomcat 重開檔案描述符
}

關鍵參數解析

參數作用
copytruncatecp 原檔 → 截斷原檔為 0,檔案描述符不變,應用無感繼續寫入
dateext輪轉檔命名為 catalina.out-20240520.gz 而非 .1.gz
compress預設 gzip,可加 compresscmd xz 改用 xz
delaycompress延遲一輪再壓縮,方便即時分析最新舊檔

手動測試與驗證


# 強制執行一次 (除錯模式)
logrotate -d /etc/logrotate.d/tomcat

# 實際執行
logrotate -f /etc/logrotate.d/tomcat

# 檢查結果
ls -lh /usr/local/tomcat/logs/
# 應出現 catalina.out-20240520.gz 且 catalina.out 大小歸零

systemd Timer 替代 cron (現代系統)


# /etc/systemd/system/logrotate-tomcat.timer
[Unit]
Description=Daily Tomcat log rotation
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target

# /etc/systemd/system/logrotate-tomcat.service
[Unit]
Description=Rotate Tomcat logs
[Service]
Type=oneshot
ExecStart=/usr/sbin/logrotate /etc/logrotate.d/tomcat

systemctl daemon-reload
systemctl enable --now logrotate-tomcat.timer

配置完成後,Tomcat 日誌將自動每日切割、壓縮、保留 5 天,零維運負擔。

Copyright © Windows教程網 All Rights Reserved