1. 手動刪除日志文件
手動清理是最基礎的策略,適用于臨時釋放磁盤空間或處理緊急情況。操作步驟包括:定位Tomcat日志目錄(通常為$CATALINA_HOME/logs,其中$CATALINA_HOME為Tomcat安裝根目錄);使用命令行工具刪除指定日志文件,例如刪除30天前的所有.log文件可使用命令:sudo find /path/to/tomcat/logs/ -type f -name "*.log" -mtime +30 -exec rm -rf {} \;。需注意,手動操作前應備份重要日志,避免誤刪影響問題排查。
2. 配置Tomcat內置日志滾動策略
通過修改Tomcat的conf/logging.properties文件,設置日志文件的自動滾動(按大小或時間分割)和保留期限,避免單個日志文件過大。關鍵配置項包括:
handlers:指定日志處理器(如1catalina.org.apache.juli.AsyncFileHandler);1catalina.org.apache.juli.AsyncFileHandler.directory:日志輸出目錄;1catalina.org.apache.juli.AsyncFileHandler.prefix:日志文件前綴;1catalina.org.apache.juli.AsyncFileHandler.maxDays:日志保留天數(如maxDays=30表示保留30天)。3. 使用logrotate工具自動化管理
logrotate是Linux系統自帶的日志管理工具,可實現日志的自動輪轉、壓縮、刪除,是Tomcat日志清理的推薦方案。配置步驟如下:
/etc/logrotate.d/tomcat文件,添加針對Tomcat日志的配置(以catalina.out為例):/path/to/tomcat/logs/catalina.out {
daily # 每天輪轉一次
rotate 7 # 保留最近7個日志文件
compress # 輪轉后壓縮(如gzip)
missingok # 日志文件丟失時不報錯
notifempty # 日志為空時不輪轉
copytruncate # 創建新日志文件并截斷舊文件(避免重啟Tomcat)
}
sudo logrotate -d /etc/logrotate.d/tomcat(模擬運行,不實際刪除文件);sudo logrotate /etc/logrotate.d/tomcat;cron每日自動執行logrotate,無需額外設置。該策略支持定時、批量操作,適合生產環境。4. 編寫Shell腳本定期清理
通過Shell腳本定制清理邏輯(如按文件類型、時間刪除),并結合cron定時任務實現自動化。示例腳本(clear_tomcat_logs.sh):
#!/bin/bash
LOG_DIR="/path/to/tomcat/logs"
# 刪除7天前的.log和.txt日志文件
find "$LOG_DIR" -type f -name "*.log" -mtime +7 -exec rm -rf {} \;
find "$LOG_DIR" -type f -name "*.txt" -mtime +7 -exec rm -rf {} \;
# 清空catalina.out文件(避免日志無限增長)
echo "" > "$LOG_DIR/catalina.out"
chmod +x /path/to/clear_tomcat_logs.sh;cron定時任務(如每天凌晨1點執行):crontab -e,添加內容:0 1 * * * /path/to/clear_tomcat_logs.sh。5. 調整日志級別減少輸出量
通過降低Tomcat日志級別,減少不必要的日志輸出,從源頭上控制日志文件大小。操作步驟:編輯conf/logging.properties文件,修改日志級別(如將java.util.logging.ConsoleHandler.level從FINE調整為WARNING或ERROR):
handlers = 1catalina.org.apache.juli.AsyncFileHandler
1catalina.org.apache.juli.AsyncFileHandler.level = WARNING # 僅記錄警告及以上級別日志
該策略適合日志量過大但對調試需求較低的場景,可顯著減少日志文件大小。
6. 使用第三方日志框架(如Log4j)
替換Tomcat默認的java.util.logging框架,使用Log4j等更強大的日志工具,實現按天分割、壓縮、歸檔等高級功能。配置步驟:
log4j-1.2.17.jar和tomcat-juli-adapters.jar復制到$CATALINA_HOME/lib目錄;conf/logging.properties文件;conf/context.xml中添加swallowOutput="true"(確保應用日志被捕獲);conf/log4j.properties文件,配置日志輸出規則(如按天分割、保留10個備份文件):log4j.rootLogger=INFO, CATALINA
log4j.appender.CATALINA=org.apache.log4j.DailyRollingFileAppender
log4j.appender.CATALINA.File=/path/to/tomcat/logs/catalina.log
log4j.appender.CATALINA.DatePattern='.'yyyy-MM-dd # 按天分割
log4j.appender.CATALINA.MaxBackupIndex=10 # 保留10個備份文件
log4j.appender.CATALINA.layout=org.apache.log4j.PatternLayout
log4j.appender.CATALINA.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
該策略適合需要復雜日志管理的場景,靈活性和功能性更強。