1. 手動清理舊日志文件(臨時解決磁盤空間問題)
首先定位Tomcat日志目錄(默認路徑通常為/var/log/tomcat/或/opt/tomcat/logs/,可通過sudo find / -name "catalina.out"或sudo find / -name "localhost.*.log"確認)。使用find命令刪除指定時間前的舊日志(如30天前):
# 刪除30天前的.log和.txt日志文件
find /path/to/tomcat/logs/ -type f -name "*.log" -mtime +30 -exec rm -rf {} \;
find /path/to/tomcat/logs/ -type f -name "*.txt" -mtime +30 -exec rm -rf {} \;
# 特別處理catalina.out(Tomcat主日志文件,需單獨清空而非刪除)
sudo truncate -s 0 /path/to/tomcat/logs/catalina.out # 清空內容(保留文件)
# 或備份后刪除(需停止Tomcat服務)
sudo systemctl stop tomcat
sudo mv /path/to/tomcat/logs/catalina.out /path/to/tomcat/logs/catalina.out.bak
sudo touch /path/to/tomcat/logs/catalina.out # 創建新文件
sudo systemctl start tomcat
注意:手動清理前建議備份重要日志(如cp catalina.out ~/catalina_backup_$(date +%F).out),避免誤刪。
2. 使用Shell腳本自動化清理(減少重復操作)
創建Shell腳本(如/usr/local/bin/clean_tomcat_logs.sh),添加以下內容(替換為實際日志路徑):
#!/bin/bash
LOG_PATH="/path/to/tomcat/logs"
# 刪除30天前的.log、.txt和access log文件
find "$LOG_PATH" -type f -name "*.log" -mtime +30 -exec rm -rf {} \;
find "$LOG_PATH" -type f -name "*.txt" -mtime +30 -exec rm -rf {} \;
find "$LOG_PATH" -type f -name "localhost_access_log.*.txt" -mtime +30 -exec rm -rf {} \;
# 清空catalina.out(避免文件過大)
truncate -s 0 "$LOG_PATH/catalina.out"
echo "$(date '+%F %T') - Tomcat logs cleaned up." >> "$LOG_PATH/cleanup.log" # 記錄清理日志
賦予腳本執行權限:
sudo chmod +x /usr/local/bin/clean_tomcat_logs.sh
優勢:腳本可擴展(如添加郵件通知),適合定期執行。
3. 配置logrotate工具(推薦:自動化輪轉與壓縮)
logrotate是Linux系統自帶的日志管理工具,可自動輪轉、壓縮、刪除舊日志。
/etc/logrotate.d/tomcat),添加以下內容(替換為實際路徑):/path/to/tomcat/logs/catalina.out {
daily # 每天輪轉
rotate 7 # 保留7天日志
compress # 壓縮舊日志(如catalina.out.1.gz)
missingok # 日志不存在時不報錯
notifempty # 日志為空時不輪轉
copytruncate # 復制原日志后清空(避免重啟Tomcat)
}
/path/to/tomcat/logs/*.log {
daily
rotate 14
compress
missingok
notifempty
}
/path/to/tomcat/logs/*.txt {
daily
rotate 30
compress
missingok
notifempty
}
sudo logrotate -vf /etc/logrotate.d/tomcat
優勢:無需手動干預,支持壓縮歸檔,節省磁盤空間。
4. 調整Tomcat日志配置(從源頭控制日志增長)
通過修改Tomcat配置文件,限制日志文件大小和保留天數:
conf/logging.properties(針對Java Util Logging):1catalina.org.apache.juli.FileHandler等處理器,添加maxDays參數(保留天數):1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
1catalina.org.apache.juli.FileHandler.maxDays = 14 # 保留14天
conf/server.xml(針對Access Log):<Host>標簽內找到AccessLogValve,添加maxDays屬性:<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="${catalina.base}/logs"
prefix="localhost_access_log."
suffix=".txt"
pattern="%h %l %u %t "%r" %s %b"
maxDays="7" /> # 保留7天
優勢:從日志生成源頭控制大小和保留時間,減少后續清理工作量。
注意事項
catalina.out)的清理。