1. 定位Tomcat訪問日志文件
Tomcat的訪問日志默認由AccessLogValve組件生成,主要記錄客戶端對Web應用的HTTP請求詳情。其路徑可通過server.xml中的AccessLogValve配置確定:
$CATALINA_HOME/logs/localhost_access_log.YYYY-MM-DD.txt(如localhost_access_log.2025-10-17.txt),其中directory屬性指定日志目錄(默認logs),prefix指定前綴(默認localhost_access_log),suffix指定后綴(默認.txt,日期格式為YYYY-MM-DD)。directory(如logs/access_logs)或prefix(如myapp_access),則需對應調整路徑查找。2. 查看訪問日志的常用命令
tail -f命令跟蹤日志文件的新增內容,例如:tail -f $CATALINA_HOME/logs/localhost_access_log.2025-10-17.txt
常用選項:-n 100(顯示最后100行)、-q(不顯示處理信息)。grep篩選關鍵字(如錯誤狀態碼500、特定URL/api),例如:grep " 500 " $CATALINA_HOME/logs/localhost_access_log.2025-10-17.txt # 查找500錯誤
grep "/api" $CATALINA_HOME/logs/localhost_access_log.2025-10-17.txt # 查找/api路徑的請求
sed截取指定時間范圍的日志(如2025-10-17 14:00至15:00),例如:sed -n '/17/Oct/2025:14:00:00/,/17/Oct/2025:15:00:00/p' $CATALINA_HOME/logs/localhost_access_log.2025-10-17.txt > /tmp/filtered_logs.txt
less分頁查看(支持上下翻頁、搜索),例如:less $CATALINA_HOME/logs/localhost_access_log.2025-10-17.txt
3. 解析訪問日志的字段含義
Tomcat訪問日志的字段由pattern屬性定義,默認使用common(基礎信息)或combined(包含Referer、User-Agent)格式。常見字段及含義如下:
%h:遠程主機IP(若resolveHosts="false")或主機名(若resolveHosts="true");%t:訪問時間(格式:[dd/MMM/yyyy:HH:mm:ss Z],如17/Oct/2025:14:30:00 +0800);%r:HTTP請求行(如GET /index.html HTTP/1.1);%s:HTTP響應狀態碼(如200成功、404未找到、500服務器錯誤);%b:發送字節數(不包括HTTP頭,0則顯示-);%D:處理請求耗時(毫秒,如123表示123ms);%{Referer}i:Referer頭(請求來源頁面,如https://example.com/page);%{User-Agent}i:User-Agent頭(客戶端瀏覽器/設備信息,如Chrome/120.0.0.0)。示例日志(默認common格式):
192.168.1.100 - - [17/Oct/2025:14:30:00 +0800] "GET /index.html HTTP/1.1" 200 2326
解析:IP192.168.1.100在14:30:00發起GET /index.html請求,返回200狀態碼,發送2326字節。
4. 常用的日志分析場景與命令
awk '{print $1}' $CATALINA_HOME/logs/localhost_access_log.2025-10-17.txt | sort | uniq -c | wc -l
awk '{print $1}' $CATALINA_HOME/logs/localhost_access_log.2025-10-17.txt | sort | uniq -c | sort -nr | head -n 10
awk '{print $9}' $CATALINA_HOME/logs/localhost_access_log.2025-10-17.txt | sort | uniq -c | sort -nr
%D字段(毫秒),計算平均值:awk '{sum+=$NF; count++} END {print "Average response time:", sum/count, "ms"}' $CATALINA_HOME/logs/localhost_access_log.2025-10-17.txt
(注:$NF表示最后一列,若%D不是最后一列,需替換為具體字段序號,如$10)5. 使用專業工具進行深度分析
若需更直觀的趨勢圖表、多維度關聯分析(如IP與狀態碼、URL的關系),可使用以下工具:
file input插件),解析字段(使用grok過濾器匹配pattern);props.conf配置Tomcat日志的字段提取,使用搜索語言(SPL)查詢(如source="localhost_access_log*" status=500 | stats count by clientip)。6. 日志輪替與管理
Tomcat默認使用logrotate(Linux系統自帶工具)每日自動切割日志,避免單個日志文件過大。切割后的日志文件命名格式為localhost_access_log.YYYY-MM-DD.txt,可通過ls -l $CATALINA_HOME/logs/查看歷史日志。
logrotate命令(如logrotate -f /etc/logrotate.d/tomcat)。logrotate的maxage參數(如maxage 30)自動刪除30天前的日志,或手動刪除:find $CATALINA_HOME/logs/ -name "localhost_access_log.*.txt" -mtime +30 -delete