Tomcat日志中查看请求响应时间的方法
Tomcat通过AccessLogValve组件记录访问日志,需修改conf/server.xml文件,添加或调整pattern参数以包含响应时间字段。关键配置如下:
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log."
suffix=".txt"
pattern="%h %l %u %t \"%r\" %s %b %D %F" />
%D:处理请求的总时间(包括请求接收、业务处理、响应发送),单位毫秒(ms);%T:处理请求的总时间,单位秒(s);%F:提交响应到客户端的时间(仅响应阶段),单位毫秒(ms)。192.168.1.100 - - [08/Nov/2025:14:30:00 +0800] "GET /api/data HTTP/1.1" 200 1024 150 150150表示处理该请求共耗时150毫秒。通过awk命令筛选出响应时间过长的请求(如超过10秒,即%D>10000):
awk '($NF > 10000) {print $0}' /path/to/tomcat/logs/localhost_access_log.txt
$NF代表日志行最后一个字段(即%D的值),此命令会输出所有处理时间超过10秒的请求详情。若需单独查看响应时间(如仅显示IP、请求方法和耗时),可使用以下命令:
awk '{print $1, $6, $NF}' /path/to/tomcat/logs/localhost_access_log.txt
192.168.1.100 "/api/data" 150(IP、请求路径、响应时间(ms))。对于长期监控或大规模应用,建议使用专业日志分析工具,将响应时间转化为直观的图表:
%D、%T转换为数值类型,进而生成响应时间的统计报表。AccessLogValve的pattern中包含%D或%F字段,否则日志中不会记录响应时间;bufferSize参数)以提高性能,但需权衡实时性;$upstream_response_time变量记录Tomcat的响应时间(需配合Tomcat日志一起分析)。