Debian系統下Tomcat日志歸檔的常用方法
手動歸檔適用于臨時備份或小規模日志管理,通過tar
命令將日志文件壓縮打包。
操作步驟:
/var/log/tomcat
或/opt/tomcat/logs
);tomcat_logs_20250925.tar.gz
):sudo tar czvf tomcat_logs_$(date +%Y%m%d).tar.gz /path/to/tomcat/logs
/home/user/backups
)。通過Shell腳本結合cron
定時任務,實現定期自動備份與舊日志清理。
操作步驟:
/opt/tomcat/scripts/backup_tomcat_logs.sh
),內容如下:#!/bin/bash
LOG_PATH="/opt/tomcat/logs" # 日志源目錄
BACKUP_PATH="/opt/tomcat/backups" # 備份目標目錄
DATE=$(date +%Y-%m-%d) # 當前日期(格式:YYYY-MM-DD)
# 備份catalina.out主日志文件
cp "$LOG_PATH/catalina.out" "$BACKUP_PATH/catalina.$DATE.out"
# 刪除30天前的備份文件(保留最近30天)
find "$BACKUP_PATH" -name "catalina.*.out" -mtime +30 -exec rm -rf {} \;
chmod +x /opt/tomcat/scripts/backup_tomcat_logs.sh
cron
定時任務(每天凌晨0點執行):crontab -e
添加以下內容:0 0 * * * /opt/tomcat/scripts/backup_tomcat_logs.sh
```。
logrotate
是Debian系統自帶的日志管理工具,可自動完成日志輪轉(分割)、壓縮、刪除舊日志,無需手動編寫腳本。
操作步驟:
/etc/logrotate.d/tomcat
),內容如下:/opt/tomcat/logs/catalina.out { # 目標日志文件路徑(根據實際調整)
daily # 每天輪轉一次
rotate 7 # 保留最近7個備份
compress # 壓縮舊備份(如.gz格式)
missingok # 日志文件不存在時不報錯
notifempty # 日志為空時不輪轉
copytruncate # 復制原日志后清空,避免重啟Tomcat
}
sudo logrotate -d /etc/logrotate.d/tomcat
sudo logrotate -f /etc/logrotate.d/tomcat
logrotate
默認通過cron
每天自動運行(通常位于/etc/cron.daily/logrotate
)。通過降低日志級別,減少不必要的日志輸出,間接降低磁盤空間占用。
操作步驟:
logging.properties
文件(位于$CATALINA_BASE/conf/
目錄,如/opt/tomcat/conf/logging.properties
);FINE
/INFO
調整為WARNING
,減少詳細日志):org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = WARNING
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = java.util.logging.ConsoleHandler
sudo systemctl restart tomcat
注意:調整日志級別可能影響問題排查,建議僅在日志量過大時使用。catalina.out
、localhost_access_log.*.txt
),避免誤刪;sudo
,確保對目標目錄有讀寫權限;/var/log
或Tomcat日志目錄的磁盤使用情況,避免日志占滿磁盤。