1. 實時查看日志文件
使用tail -f
命令可實時監控Tomcat日志文件的最新內容,快速捕捉異常信息。例如,若Tomcat版本為10,日志路徑通常為/var/log/tomcat10/catalina.out
,執行tail -f /var/log/tomcat10/catalina.out
即可實時顯示新增日志;也可結合less
或more
命令分頁查看歷史日志,便于詳細分析。
2. 過濾異常關鍵字
通過grep
命令過濾日志中的異常關鍵字(如ERROR
、Exception
、SEVERE
),快速定位問題條目。例如:
grep "ERROR" /var/log/tomcat10/catalina.out
:提取所有包含“ERROR”的日志行;grep -i "exception" /var/log/tomcat10/catalina.out
:忽略大小寫查找“exception”;grep "SEVERE" /var/log/tomcat10/catalina.out
:篩選嚴重級別日志(Tomcat默認日志級別中,SEVERE為最高)。3. 調整日志級別
修改Tomcat的logging.properties
文件(位于conf
目錄),調整日志級別以控制日志輸出的詳細程度。日志級別從低到高依次為FINEST
、FINER
、FINE
、CONFIG
、INFO
、WARNING
、SEVERE
,級別越高,輸出的日志越精簡。例如,將全局日志級別設置為WARNING
,可減少不必要的INFO
日志,突出顯示警告和錯誤信息:
handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
.level = WARNING
1catalina.org.apache.juli.FileHandler.level = WARNING
java.util.logging.ConsoleHandler.level = WARNING
修改后需重啟Tomcat使配置生效。
4. 使用命令行工具分析日志
結合grep
、awk
、sed
等命令行工具對日志進行深度分析,例如統計錯誤數量、提取異常堆棧信息:
ERROR
日志數量:grep -c "ERROR" /var/log/tomcat10/catalina.out
;grep -A 10 "Exception" /var/log/tomcat10/catalina.out | grep -B 10 "at"
(顯示異常及后續10行堆棧);awk '/2025-09-23.*ERROR/{count++} END{print count}' /var/log/tomcat10/catalina.out
(統計2025-09-23當天的ERROR
數量)。5. 集成專業日志監控工具
使用ELK Stack(Elasticsearch+Logstash+Kibana)、Graylog或Splunk等工具,實現日志的集中收集、存儲、分析與可視化:
catalina.out
、localhost_access_log.*.txt
),Logstash解析日志并發送至Elasticsearch,Kibana配置儀表盤展示錯誤日志趨勢、異常類型分布,并設置告警規則(如ERROR
日志數量超過10條/分鐘時觸發郵件通知);index=tomcat sourcetype=catalina "ERROR"
。6. 配置日志輪轉
使用logrotate
工具自動輪轉Tomcat日志,避免日志文件過大占用磁盤空間。編輯/etc/logrotate.d/tomcat10
文件(若不存在則創建),添加以下配置:
/var/log/tomcat10/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 640 tomcat tomcat
sharedscripts
postrotate
systemctl restart tomcat10 >/dev/null 2>&1 || true
endscript
}
配置說明:
daily
:每日輪轉一次;rotate 7
:保留最近7天的日志;compress
:壓縮舊日志(如catalina.out.1.gz
);postrotate
:輪轉后重啟Tomcat,確保日志寫入新文件。7. 自定義監控腳本
編寫Shell腳本定期檢查日志中的異常,并在檢測到問題時觸發告警(如發送郵件、重啟Tomcat)。例如,以下腳本檢查catalina.out
中的ERROR
日志,若數量超過5條則發送郵件通知:
#!/bin/bash
LOG_FILE="/var/log/tomcat10/catalina.out"
ERROR_COUNT=$(grep -c "ERROR" "$LOG_FILE")
THRESHOLD=5
EMAIL="admin@example.com"
if [ "$ERROR_COUNT" -gt "$THRESHOLD" ]; then
echo "Tomcat日志中ERROR數量超過閾值:$ERROR_COUNT" | mail -s "Tomcat異常告警" "$EMAIL"
# 可選:重啟Tomcat(謹慎使用)
# systemctl restart tomcat10
fi
將腳本保存為/usr/local/bin/monitor_tomcat.sh
,添加執行權限(chmod +x /usr/local/bin/monitor_tomcat.sh
),并通過cron
定時運行(如每5分鐘一次):
*/5 * * * * /usr/local/bin/monitor_tomcat.sh
8. JMX監控
開啟Tomcat的JMX(Java Management Extensions)功能,通過JMX客戶端(如JConsole、VisualVM)實時監控Tomcat的運行狀態與異常信息。步驟如下:
catalina.sh
(Linux)或catalina.bat
(Windows)文件,添加JMX配置:export CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
bin
目錄)連接localhost:1099
,查看“MBeans”→“Tomcat”→“線程”“內存”“異?!钡戎笜?,實時監控異常情況。