溫馨提示×

如何清理Debian Tomcat的舊日志文件

小樊
42
2025-09-18 19:25:55
欄目: 智能運維

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系統自帶的日志管理工具,可自動輪轉、壓縮、刪除舊日志。

  • 創建Tomcat專用配置文件(/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天
    

優勢:從日志生成源頭控制大小和保留時間,減少后續清理工作量。

注意事項

  • 清理前備份重要日志(如涉及故障排查),避免數據丟失。
  • 避免過度清理(如保留至少7天日志),便于后續問題分析。
  • 對于生產環境,優先使用logrotate(自動化程度高),結合Shell腳本補充特殊日志(如catalina.out)的清理。
  • 若日志量極大,可考慮使用Log4j替代Java Util Logging(提供更靈活的滾動策略,如按天分割),但需額外配置。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女