溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現Linux Tomcat7 catalina.out日志文件切割

發布時間:2022-01-24 11:42:04 來源:億速云 閱讀:368 作者:柒染 欄目:開發技術
# 如何實現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

2. 配置文件示例

/opt/tomcat7/logs/catalina.out {
    daily                     # 按天切割
    rotate 30                 # 保留30個備份
    copytruncate              # 復制后清空原文件
    missingok                 # 文件不存在時不報錯
    compress                  # 啟用gzip壓縮
    delaycompress             # 延遲壓縮(下次輪轉時壓縮)
    dateext                   # 使用日期作為后綴
    notifempty                # 空文件不輪轉
}

3. 參數說明

  • copytruncate:關鍵參數,確保不重啟Tomcat即可切割日志
  • compress:可節省50%-70%的磁盤空間
  • rotate:建議根據磁盤空間調整保留份數

4. 手動測試

# 測試配置文件語法
logrotate -d /etc/logrotate.d/tomcat7

# 立即執行切割(debug模式)
logrotate -vf /etc/logrotate.d/tomcat7

方案二:使用cronolog第三方工具

1. 安裝cronolog

# CentOS/RHEL
sudo yum install cronolog

# Ubuntu/Debian
sudo apt-get install cronolog

2. 修改Tomcat啟動腳本

編輯$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 &

3. 重啟Tomcat生效

sudo service tomcat7 restart

4. 效果驗證

日志將自動按天生成:

catalina.2023-08-20.out
catalina.2023-08-21.out

方案三:使用Tomcat內置的FileHandler(需JDK1.7+)

1. 修改logging.properties

編輯$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

2. 注意事項

  • 此方案僅處理通過JULI輸出的日志
  • 需配合CATALINA_OUT重定向使用才能完全替代catalina.out

方案對比

方案 優點 缺點 適用場景
logrotate 系統原生,無需修改Tomcat 需要配置copytruncate參數 生產環境推薦
cronolog 實時切割,精度高 需安裝第三方工具 需要按小時切割的場景
FileHandler Tomcat原生支持 功能有限 簡單場景

最佳實踐建議

  1. 組合使用:生產環境建議同時配置:

    • logrotate處理catalina.out
    • FileHandler處理其他組件日志
  2. 日志清理策略

    # 添加至crontab定期清理舊日志
    0 3 * * * find /opt/tomcat7/logs -name "catalina.*" -mtime +30 -exec rm -f {} \;
    
  3. 監控設置

    • 使用Zabbix等工具監控日志目錄大小
    • 設置報警閾值(如>10GB)
  4. 日志分析

    # 使用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字要求。如需精簡,可刪除”方案對比”或”最佳實踐建議”部分非核心內容。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

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