1. 定位Tomcat日志文件
Debian系統中,Tomcat日志默認存儲在/var/log/tomcatX/
目錄(X為Tomcat主版本號,如9對應/var/log/tomcat9/
)。核心日志文件包括:
server.xml
配置開啟)。2. 調整日志級別,過濾冗余信息
日志級別從低到高分為FINEST
(最詳細)、FINE
、CONFIG
、INFO
(默認)、WARNING
、SEVERE
(最嚴重)。通過修改conf/logging.properties
文件,可針對性降低不必要的日志輸出:
WARNING
:org.apache.catalina.level = WARNING
;org.apache.catalina.startup.level = WARNING
;java.util.logging.ConsoleHandler.level = WARNING
。3. 配置日志輪轉,防止文件膨脹
使用logrotate
工具自動管理日志文件,避免單個日志文件過大導致磁盤空間耗盡。編輯/etc/logrotate.d/tomcat
(若不存在則新建),添加以下配置:
/var/log/tomcat9/*.log {
daily # 每日輪轉
missingok # 忽略缺失文件
rotate 30 # 保留30天日志
compress # 壓縮舊日志(節省空間)
delaycompress # 延遲壓縮(避免影響當前日志寫入)
notifempty # 空日志不輪轉
create 640 tomcat tomcat # 創建新日志文件并設置權限
sharedscripts # 所有日志輪轉完成后執行腳本
postrotate
systemctl restart tomcat >/dev/null 2>&1 || true
endscript
}
此配置可實現日志的自動清理與歸檔,釋放磁盤空間。
4. 實時監控與異常檢測
通過tail -f
命令實時查看關鍵日志(如catalina.out
),快速捕捉錯誤信息:
tail -f /var/log/tomcat9/catalina.out | grep -E "ERROR|SEVERE|Exception"
重點關注以下內容:
ERROR
、SEVERE
、Exception
(如NullPointerException
、SQLException
);grep " 500 " /var/log/tomcat9/access_log.*.txt
統計500錯誤率,識別高頻失敗請求。5. 使用高級日志分析工具
借助ELK Stack(Elasticsearch+Logstash+Kibana)或Graylog等工具,對日志進行集中化存儲、分析與可視化:
6. 關聯系統監控與預警
將Tomcat日志與系統監控工具(如Prometheus+Grafana)結合,監控關鍵指標并設置預警:
jstat -gcutil <pid> 1000
獲取GC情況,若頻繁Full GC則可能存在內存泄漏;top
、htop
監控CPU、內存使用率,若Tomcat進程占用過高則需優化線程池或應用性能;7. 優化訪問日志,分析性能瓶頸
在conf/server.xml
中配置AccessLogValve
,記錄詳細的訪問信息并啟用日志輪轉:
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="/var/log/tomcat9"
prefix="access_log."
suffix=".txt"
rotatable="true"
maxDays="30"
pattern="%h %l %u %t "%r" %s %b %D %{Referer}i %{User-Agent}i" />
%D
記錄請求處理時間(毫秒),%{Referer}i
記錄來源頁面,%{User-Agent}i
記錄客戶端瀏覽器信息;awk
計算平均響應時間(如awk '{sum+=$10; count++} END {print "Average time: " sum/count "ms"}' access_log.2025-10-18.txt
),識別慢請求(如響應時間超過1秒的請求),進而優化SQL查詢、緩存策略或代碼邏輯。8. 禁用不必要的日志輸出
bin/catalina.sh
,將CATALINA_OUT
指向/dev/null
(僅保留關鍵日志到文件):if [ -z "$CATALINA_OUT" ] ; then
CATALINA_OUT=/dev/null
fi
stdout
/stderr
日志,可將conf/logging.properties
中相關handler級別設為OFF
:1catalina.org.apache.juli.FileHandler.level = OFF
2localhost.org.apache.juli.FileHandler.level = OFF
此操作可減少磁盤IO,提升Tomcat性能。