为了调试性能问题,我在tomcat中启用了访问日志。我们没有使用任何apache服务器。它是我们正在使用的嵌入式tomcat。
我正在使用以下模式访问日志。
access-patten = %h %l %u %t "%r" %s %b %D
Run Code Online (Sandbox Code Playgroud)
%D =接收到请求的第一个字节的时间〜发送响应的最后一个字节的时间。
因此%D也包括网络延迟。
但是,如何打印收到的请求的第一个字节和发送的响应的第一个字节之间的时间差。
小智 5
如Tomer所述,自Tomcat 7.0.42版以来,AccessLogValve实现中提供了一个新的日志元素'%F'。您可以在案例描述中找到关于'%D'和'%F'之间差异的更好描述:
错误55102-增加了报告准备响应所花费的时间的功能:
Tomcat的AccessLogValve能够报告使用%D发送整个请求所花费的时间。这是总的处理时间,可能会受到网络状况的影响。有时能够记录服务器准备响应并将第一内容发送到客户端所花费的时间,这很有用。
随附的补丁程序记录了提交响应的时间,然后允许使用“%F”模式(与HTTPD的mod-log-firstbyte模块所使用的模式相同)在访问日志中报告该时间。
小智 1
在我看来,access log的职责是记录程序本身的信息,这意味着tomcat将程序包作为一个整体来查看,因此我们可能无法仅获取字节详细信息。
如果您想获取应用程序日志记录详细信息,您可以记录程序 webapp 日志,可能是程序内的 log4j 或 logback 日志记录详细信息。例如在程序的开头添加“System.currentTimeMillis()”,并添加到末尾。请使用您的网络应用程序日志,但不要使用访问日志。
谢谢,希望有帮助。
| 归档时间: |
|
| 查看次数: |
8973 次 |
| 最近记录: |