Tomcat请求记录 – 如何?

环境:雄猫7。

想记录http请求及其标题。 实际上,只要我可以记录调用者的IP地址,他请求的资源(URL)和请求类型(GET,POST等),我就可以不使用标题

这似乎是一个微不足道的问题,但实际上并非如此。

标准方法是使用AccessLogValve ,但据我所知,其中一个实际上不是请求日志记录,它是请求/响应日志记录,这意味着它不会在响应周期结束之前记录任何内容。 它只会记录响应已成功传递到http客户端的请求。 如果出现问题之前,AccessLogValve将不会记录请求。

问题1:这是否正确理解?

问题2:还有其他选择吗?

更新1:

我已经使用一个基于URL参数阻塞x秒的虚拟servlet对Tomcat7进行了测试。 我的发现确实是AccessLogValve记录了该请求……虽然正如预期的那样,直到响应结束时才会发生这种情况,即在x秒之后。 无论客户端在请求完成之前是否已中止,并且无论servlet在处理期间是否抛出exception,都会有一个日志条目。

因此问题1的答案是:“否”。

结论

AcccesLogValve最终生成一个日志条目。 至少我还没有能够产生这种情况并非如此。

我看到的所有访问日志都是在处理请求/响应之后编写的,因为记录响应大小或总处理时间等信息很有用。

“如果出现问题,AccessLogValve将不会记录请求。

问题1:这是否正确理解?“

不,不是基于我的经验。 始终记录请求/响应,即使处理错误也是如此。 在这种情况下,HTTP状态代码字段(日志模式中的%s )将包含错误代码,如500。