Tomcat的日志文件默認存儲在$CATALINA_HOME/logs目錄下($CATALINA_HOME為Tomcat安裝目錄),常見日志文件及作用:
使用tail -f命令實時查看日志文件的最新內容,便于快速定位正在發生的異常:
tail -f /opt/tomcat/logs/catalina.out
若需同時監控多個日志文件(如catalina.out和localhost.log),可使用:
tail -f /opt/tomcat/logs/catalina.out /opt/tomcat/logs/localhost.log
按Ctrl+C停止監控。
grep篩選包含“ERROR”“WARN”或特定業務關鍵詞(如“NullPointerException”)的日志行,快速定位問題:grep "ERROR" /opt/tomcat/logs/catalina.out # 篩選ERROR日志
grep "NullPointerException" /opt/tomcat/logs/catalina.out # 篩選空指針異常
grep -E(或egrep)處理復雜模式,如篩選HTTP 5xx狀態碼(服務器錯誤):grep -E " 5[0-9]{2} " /opt/tomcat/logs/access_log.2025-10-07.txt # 匹配5xx狀態碼
sed提取指定時間范圍的日志(如2025-10-07 14:00至15:00):sed -n '/2025-10-07 14:00:00/,/2025-10-07 15:00:00/p' /opt/tomcat/logs/catalina.out
awk提取日志中的關鍵字段(如時間戳、IP地址、狀態碼),便于后續分析:awk '{print $1, $2, $4}' /opt/tomcat/logs/access_log.2025-10-07.txt # 提取時間、IP、請求方法
awk + sort + uniq -c + sort -nr組合統計高頻IP、狀態碼或URL:awk '{print $1}' /opt/tomcat/logs/access_log.2025-10-07.txt | sort | uniq -c | sort -nr | head -n 10 # 統計Top 10訪問IP
awk '{print $9}' /opt/tomcat/logs/access_log.2025-10-07.txt | sort | uniq -c | sort -nr # 統計狀態碼分布(如200、404、500)
%D或%T),用awk計算平均值(假設第10列為響應時間,單位為毫秒):awk '$10 ~ /^[0-9]+$/ {sum += $10; count++} END {print "Average response time:", sum/count "ms"}' /opt/tomcat/logs/access_log.2025-10-07.txt
定期輪轉日志文件可避免日志過大占用磁盤空間,常用方法:
logrotate工具:編輯/etc/logrotate.d/tomcat文件,添加以下配置(按天輪轉,保留7天,壓縮舊日志):/opt/tomcat/logs/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 640 tomcat tomcat
}
手動觸發輪轉:logrotate -f /etc/logrotate.d/tomcat。mv /opt/tomcat/logs/catalina.out /opt/tomcat/logs/catalina.out.$(date +%Y%m%d%H%M%S)
touch /opt/tomcat/logs/catalina.out
chown tomcat:tomcat /opt/tomcat/logs/catalina.out
chmod 640 /opt/tomcat/logs/catalina.out
find命令刪除超過30天的壓縮日志文件:find /opt/tomcat/logs/ -name 'catalina.out.*.gz' -type f -mtime +30 -exec rm -f {} \;
對于大規?;驈碗s的日志分析,可使用以下工具提升效率:
通過修改conf/logging.properties文件調整日志級別和輸出,減少無關日志干擾:
org.apache.catalina.level從FINE改為INFO),減少冗余信息:org.apache.catalina.level = INFO
org.apache.catalina.loader.WebappClassLoader.level = WARNING
ConsoleHandler輸出日志到控制臺(便于開發調試),或調整FileHandler的文件大小和備份數量:handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
1catalina.org.apache.juli.FileHandler.level = INFO
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
1catalina.org.apache.juli.FileHandler.maxDays = 7