spring - 在 Spring/Tomcat 中记录传入和传出的 HTTP REST 请求/响应

标签 spring rest tomcat logging spring-4

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

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

  2. 就 Spring 中的 REST 服务的日志记录而言,我可以采用哪些最佳实践,我可以使用 Spring 或 Tomcat 提供的任何功能来更好地进行日志记录和调查?

谢谢

最佳答案

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

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中找到.

关于spring - 在 Spring/Tomcat 中记录传入和传出的 HTTP REST 请求/响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39849132/

相关文章:

java - 在服务类中启用 JSR-303 注释验证(不在 Spring Controller 中,也不在 JAX-RS 资源中)

java - 如何使用@JsonIgnore仅在对象不是根对象时应用?

java - 如何使用 mockito 测试 REST 服务?

angularjs - 使用 Wordpress REST API 通过 url 获取页面

rest - 使用LinkedIn API中的Oauth 2.0获取用户个人资料

Linux Tomcat 错误

multithreading - JVM线程与tomcat线程有何不同,它们是否有一个映射到内核线程的公共(public)池

java - Maven 无法在本地 jar 文件中收集依赖项

andOperator 的 Spring Mongo 标准问题

java - tomcat 中的 <session-timeout> 过期非常快(1 天 > 7 天)