在 Spring/Tomcat 中记录传入和传出 HTTP REST request/response

Logging incoming and outgoing HTTP REST request/response in Spring/Tomcat

我有一个 Spring REST 服务,有时当我请求 REST 服务时,我会收到 HTTP 401。我正在调查这个问题,这是间歇性的,不会一直发生。 (这是我每次发送的相同请求)。我还集成了 swagger 以提供 REST 文档。 我正在将 spring REST 服务作为 Web 应用程序部署到 Tomcat 7.

  1. 如何记录传入和传出的 HTTP 请求,即使该请求是未经身份验证的请求。我希望能够将所有传入请求及其相应的传出响应联系起来。这也是我想推广到生产应用程序中的东西。

  2. 在 Spring 中的 REST 服务日志记录方面,我可以采用哪些最佳实践,我可以使用 Spring 或 Tomcat 提供的任何功能以获得更好的效果记录和调查?

谢谢

也许最好的方法是结合使用 Logging framework 和自定义 javax.servlet.Filter。它可以从您在应用程序中使用的其他环境(例如 Spring MVC 或 Struts)中单独跟踪所有 HTTP requests/responses。

It is important thing that in this case logging must work separately from other parts of application because, otherwise it will depend on some components and does not reflect the real low level events as is or can be broken at all.

我建议您使用 Logback,因为它具有开箱即用的组件,可以满足您的需求。

使用 Logback 配置您的 WEB 应用程序可能如下所示:

web.xml

<filter>
  <filter-name>TeeFilter</filter-name>
  <filter-class>ch.qos.logback.access.servlet.TeeFilter</filter-class>
</filter>

<filter-mapping>
  <filter-name>TeeFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

可以在 Logback documentation 中找到更多详细信息。