要清理過期的Tomcat日志,您可以采取以下幾種方法:
查找日志文件:
使用 df -h 命令檢查磁盤空間,確定是否需要清理日志。
使用 cd / 進入根目錄,使用 du -sh * 列舉出所有目錄和文件的占用大小情況,找到占用空間最大的目錄。
刪除日志文件:
使用 rm -rf 文件名/目錄名 命令刪除不需要的日志文件。刪除前請確保文件路徑正確,以免誤刪。
禁止日志輸出:
編輯 catalina.sh 文件,注釋掉日志輸出路徑,將日志輸出到 /dev/null,從而避免生成新的日志文件。
創建清理腳本:
在Tomcat的 bin 目錄下創建一個名為 clean.sh 的腳本文件,內容如下:
#!/bin/bash
LOGS_PATH="/path/to/tomcat/logs"
DATE=$(date +%Y-%m-%d)
DAYS=30 # 可以根據需要修改天數
# 復制 catalina.out 按日期命名
cp $LOGS_PATH/catalina.out $LOGS_PATH/catalina.$DATE.out
# 清空 catalina.out
echo "" > $LOGS_PATH/catalina.out
# 刪除30天以前的日志文件
find $LOGS_PATH -mtime +$DAYS -name "catalina.*.out" -exec rm -rf {} \;
find $LOGS_PATH -mtime +$DAYS -name "localhost.*.log" -exec rm -rf {} \;
find $LOGS_PATH -mtime +$DAYS -name "localhost_access_log.*.txt" -exec rm -rf {} \;
find $LOGS_PATH -mtime +$DAYS -name "catalina.*.log" -exec rm -rf {} \;
find $LOGS_PATH -mtime +$DAYS -name "manager.*.log" -exec rm -rf {} \;
find $LOGS_PATH -mtime +$DAYS -name "host-manager.*.log" -exec rm -rf {} \;
find $LOGS_PATH -mtime +$DAYS -name "fileservice.log.*" -exec rm -rf {} \;
賦予腳本執行權限:
chmod 777 $LOGS_PATH/clean.sh
設置定時任務:
使用 crontab -e 添加定時任務,例如每天凌晨執行清理腳本:
0 0 * * * /path/to/tomcat/logs/clean.sh
推薦使用Log4j、Logback等成熟的日志框架,通過配置文件靈活管理日志輸出,可以自動切割和清理日志文件。
logging.properties 配置文件在Tomcat的 conf 目錄下找到 logging.properties 文件,修改以下配置以設置日志保留天數:
handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler
1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.maxDays = 90
2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
2localhost.org.apache.juli.AsyncFileHandler.maxDays = 90
3manager.org.apache.juli.AsyncFileHandler.level = FINE
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.
3manager.org.apache.juli.AsyncFileHandler.maxDays = 90
4host-manager.org.apache.juli.AsyncFileHandler.level = FINE
4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
4host-manager.org.apache.juli.AsyncFileHandler.maxDays = 90
通過以上方法,您可以有效地清理過期的Tomcat日志,優化服務器性能和管理便捷性。