# 如何實現Linux Tomcat7 catalina.out日志文件切割
## 前言
在Linux服務器上運行Tomcat7時,`catalina.out`日志文件會隨著時間推移不斷增長,可能導致磁盤空間不足、日志檢索困難等問題。本文將詳細介紹三種主流的日志切割方案,幫助您有效管理Tomcat日志。
---
## 方案一:使用Linux系統自帶的logrotate工具
### 1. 安裝與配置
logrotate是Linux系統自帶的日志管理工具,通過cron定期執行:
```bash
# 檢查是否已安裝(通常默認安裝)
which logrotate
# 創建Tomcat專屬配置文件
sudo vi /etc/logrotate.d/tomcat7
/opt/tomcat7/logs/catalina.out {
daily # 按天切割
rotate 30 # 保留30個備份
copytruncate # 復制后清空原文件
missingok # 文件不存在時不報錯
compress # 啟用gzip壓縮
delaycompress # 延遲壓縮(下次輪轉時壓縮)
dateext # 使用日期作為后綴
notifempty # 空文件不輪轉
}
# 測試配置文件語法
logrotate -d /etc/logrotate.d/tomcat7
# 立即執行切割(debug模式)
logrotate -vf /etc/logrotate.d/tomcat7
# CentOS/RHEL
sudo yum install cronolog
# Ubuntu/Debian
sudo apt-get install cronolog
編輯$CATALINA_HOME/bin/catalina.sh
:
# 找到以下行(約行390):
if [ -z "$CATALINA_OUT" ] ; then
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
fi
# 修改為:
if [ -z "$CATALINA_OUT" ] ; then
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out
fi
# 繼續找到以下行(約行409):
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_OUT" 2>&1 "&"
# 修改為:
org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \
| /usr/sbin/cronolog "$CATALINA_OUT" >> /dev/null &
sudo service tomcat7 restart
日志將自動按天生成:
catalina.2023-08-20.out
catalina.2023-08-21.out
編輯$CATALINA_HOME/conf/logging.properties
:
1catalina.org.apache.juli.FileHandler.prefix = catalina.
1catalina.org.apache.juli.FileHandler.suffix = .log
1catalina.org.apache.juli.FileHandler.encoding = UTF-8
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.rotatable = true
1catalina.org.apache.juli.FileHandler.maxDays = 30
CATALINA_OUT
重定向使用才能完全替代catalina.out方案 | 優點 | 缺點 | 適用場景 |
---|---|---|---|
logrotate | 系統原生,無需修改Tomcat | 需要配置copytruncate參數 | 生產環境推薦 |
cronolog | 實時切割,精度高 | 需安裝第三方工具 | 需要按小時切割的場景 |
FileHandler | Tomcat原生支持 | 功能有限 | 簡單場景 |
組合使用:生產環境建議同時配置:
catalina.out
日志清理策略:
# 添加至crontab定期清理舊日志
0 3 * * * find /opt/tomcat7/logs -name "catalina.*" -mtime +30 -exec rm -f {} \;
監控設置:
日志分析:
# 使用awk快速分析錯誤率
awk '/ERROR/{err++} END{print "Error rate:",err/NR*100"%"}' catalina.out
Q: 切割后日志停止寫入?
A: 檢查是否使用了copytruncate
參數,或Tomcat進程是否有寫入權限
Q: 磁盤空間未釋放?
A: 可能Tomcat仍持有文件描述符,需重啟或使用>/tmp/catalina.out
重定向
Q: 日志時間戳混亂?
A: 檢查服務器時區設置:timedatectl set-timezone Asia/Shanghai
通過以上方案,您可以有效解決Tomcat7日志無限增長的問題。根據實際需求選擇最適合的方案,建議先在測試環境驗證效果。 “`
注:實際字數約1200字,已超出950字要求。如需精簡,可刪除”方案對比”或”最佳實踐建議”部分非核心內容。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。