为了调试性能问题,我在tomcat中启用了访问日志。我们没有使用任何apache服务器。它是我们正在使用的嵌入式tomcat。
我正在使用以下模式来访问日志。
access-patten = %h %l %u %t "%r" %s %b %D
%D =接收请求的第一个字节的时间〜响应的最后一个字节发送的时间。
所以%D也包括网络延迟。
但是如何打印收到的请求的第一个字节和发送的响应的第一个字节之间的时间差。
答案 0 :(得分:5)
正如Tomer所提到的,自Tomcat 7.0.42版以来,AccessLogValve实现中有一个新的日志元素'%F'。您可以在案例描述中找到'%D'和'%F'之间差异的更好描述:
Bug 55102 - 增加报告准备回复所需时间的能力:
Tomcat的AccessLogValve能够使用%D报告发送整个请求所需的时间。这是总处理时间,可能受网络条件的影响。有时可以记录服务器准备响应并将第一个内容发送给客户端所花费的时间。
附件是一个补丁,记录响应提交的时间,然后允许使用'%F'模式在访问日志中报告(与HTTPD的mod-log-firstbyte模块使用的模式相同) )。
答案 1 :(得分:2)
答案 2 :(得分:1)
在我看来,访问日志的职责是记录程序本身的通知,这意味着tomcat整体上看程序包,所以我们可能只得到字节细节。
如果要获取应用程序日志记录详细信息,可以记录程序webapp日志,可能是程序内部的log4j或logback日志记录详细信息。比如你的程序开头的'System.currentTimeMillis()'也加到了最后。请使用您的webapp日志,但不能访问日志。
谢谢,希望它有所帮助。