通過tar命令直接打包Tomcat日志目錄(默認路徑為/var/log/tomcat或$CATALINA_HOME/logs),生成壓縮文件并存儲到安全位置。操作步驟如下:
sudo systemctl stop tomcat;sudo tar -czvf /backup/tomcat_logs_$(date +%Y%m%d).tar.gz /var/log/tomcat($(date +%Y%m%d)用于生成帶日期的文件名,便于區分);sudo systemctl start tomcat。logrotate是Linux系統自帶的日志管理工具,可自動切割、壓縮、刪除舊日志,避免日志文件過大占用磁盤空間。配置步驟如下:
/etc/logrotate.d/tomcat),添加以下規則:/var/log/tomcat/*.log {
daily # 每天輪轉
rotate 7 # 保留最近7天的日志
compress # 壓縮舊日志(如gzip)
missingok # 若日志文件不存在也不報錯
notifempty # 若日志為空則不輪轉
create 0644 root root # 創建新日志文件并設置權限
dateext # 使用日期作為輪轉文件的后綴(如catalina.out-20251017)
sharedscripts # 所有日志輪轉完成后統一執行postrotate腳本
postrotate
/bin/kill -HUP $(cat /var/run/tomcat.pid 2>/dev/null) 2>/dev/null || true # 通知Tomcat重新打開日志文件
endscript
}
sudo logrotate -f /etc/logrotate.d/tomcat(強制立即執行輪轉)。通過編寫Shell腳本實現更靈活的日志備份(如同時備份多個日志文件、上傳到遠程存儲),并結合cron定時執行。示例腳本(/usr/local/bin/tomcat_log_backup.sh):
#!/bin/bash
# 定義變量
LOG_DIR="/var/log/tomcat"
BACKUP_DIR="/backup/tomcat_logs"
DATE=$(date +%Y%m%d_%H%M%S)
# 創建備份目錄(若不存在)
mkdir -p $BACKUP_DIR
# 停止Tomcat(可選,根據需求調整)
sudo systemctl stop tomcat
# 備份所有日志文件(包括catalina.out、access_log等)
tar -czvf $BACKUP_DIR/tomcat_logs_$DATE.tar.gz $LOG_DIR/*.log $LOG_DIR/catalina.out
# 刪除超過30天的舊備份(可選)
find $BACKUP_DIR -name "tomcat_logs_*.tar.gz" -mtime +30 -exec rm -f {} \;
# 啟動Tomcat(可選)
sudo systemctl start tomcat
sudo chmod +x /usr/local/bin/tomcat_log_backup.sh;crontab -e,添加行:0 2 * * * /usr/local/bin/tomcat_log_backup.sh。Tomcat的catalina.out日志文件會持續增長(默認無輪轉),需通過腳本定期分割。示例腳本(/usr/local/bin/split_catalina_out.sh):
#!/bin/bash
LOG_DIR="/var/log/tomcat"
BACKUP_DIR="/backup/tomcat_logs"
DATE=$(date +%Y-%m-%d)
# 備份并清空catalina.out
cp $LOG_DIR/catalina.out $BACKUP_DIR/catalina.$DATE.bak
> $LOG_DIR/catalina.out # 清空原文件
# 可選:將備份文件壓縮
tar -czvf $BACKUP_DIR/catalina.$DATE.tar.gz $BACKUP_DIR/catalina.$DATE.bak
rm -f $BACKUP_DIR/catalina.$DATE.bak # 刪除未壓縮的備份(節省空間)
sudo chmod +x /usr/local/bin/split_catalina_out.sh;crontab -e,添加行:*/2 * * * * /usr/local/bin/split_catalina_out.sh。catalina.out無限增長的問題,適合需要頻繁分割日志的場景。