我有一个 Spring REST 服务,有时当我请求 REST 服务时,我会收到 HTTP 401。我正在调查这个问题,这是间歇性的,不会一直发生。 (这是我每次发送的相同请求)。我还集成了 swagger 以提供 REST 文档。 我正在将我的 spring REST 服务作为 webapp 部署到 Tomcat 7。
即使请求是未经身份验证的请求,我如何记录传入和传出的 HTTP 请求。我希望能够将所有传入请求及其相应的传出响应联系起来。这也是我想推广到生产应用程序中的东西。
就 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/