Debian系統中,Tomcat的訪問日志(記錄請求類型的關鍵日志)默認存放在/var/log/tomcatX(X為Tomcat版本號,如tomcat9)或/opt/tomcat/logs目錄下,常見文件名為access_log、localhost_access_log.*.txt或catalina.out。若無法確定路徑,可通過編輯Tomcat配置文件/opt/tomcat/conf/server.xml(或/var/lib/tomcatX/conf/server.xml),查找<Valve className="org.apache.catalina.valves.AccessLogValve">標簽中的directory(日志目錄)和prefix(文件名前綴)屬性,確認日志文件位置。
Tomcat訪問日志的格式由pattern屬性定義,默認使用common(簡化格式)或combined(擴展格式)。其中,請求類型(如GET、POST)由%m字段表示,位于日志條目的第5個位置(以空格分隔)。
common格式示例:%h %l %u %t "%r" %s %b(%r包含請求方法和URL,如GET /index.html HTTP/1.1);combined格式示例:%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"(同樣通過%r獲取請求類型)。server.xml中修改pattern,添加%m字段(如pattern="%h %l %u %t %m %U %s %b"),此時請求類型會單獨顯示為第5個字段。通過以下命令快速過濾或提取日志中的請求類型:
cat或less命令打開日志文件,直接查看包含%r字段的行(如GET /index.html HTTP/1.1)。less /var/log/tomcat9/access_log
%m字段):用awk命令分割日志行,提取第5個字段(%r中的請求方法)。awk '{print $5}' /var/log/tomcat9/access_log | cut -d'"' -f1
上述命令中,cut -d'"' -f1用于去除%r中的URL和協議部分(如GET /index.html HTTP/1.1會提取為GET)。sort和uniq -c命令,統計每種請求類型的出現次數,并按降序排列。awk '{print $5}' /var/log/tomcat9/access_log | cut -d'"' -f1 | sort | uniq -c | sort -nr
輸出示例:1200 GET
300 POST
50 PUT
表示GET請求最多,共1200次,其次是POST(300次)和PUT(50次)。若默認日志格式不易查看請求類型,可修改server.xml中的AccessLogValve配置,將%m字段單獨列出。例如:
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log."
suffix=".txt"
pattern="%h %l %u %t %m %U %s %b"
resolveHosts="false"/>
重啟Tomcat(systemctl restart tomcat9)后,日志將變為:
127.0.0.1 - - [03/Oct/2025:10:00:00 +0000] GET /index.html 200 1024
127.0.0.1 - - [03/Oct/2025:10:00:01 +0000] POST /submit 302 0
此時,請求類型(GET、POST)會單獨顯示,更便于查看。
通過以上步驟,可在Debian系統的Tomcat日志中快速定位并分析請求類型,幫助排查問題或優化應用性能。