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

在Spring/Tomcat中记录传入和传出HTTP REST请求/响应,spring,rest,tomcat,logging,spring-4,Spring,Rest,Tomcat,Logging,Spring 4,我有一个SpringREST服务,有时当我请求REST服务时,我会得到一个HTTP401。我正在调查这个问题,这是间歇性的,并非总是发生。(每次发送的请求都是一样的)。我还集成了swagger来提供REST文档。 我正在将我的SpringREST服务作为一个webapp部署到Tomcat7 即使请求是未经验证的请求,我如何记录传入和传出的HTTP请求。我希望能够将所有传入的请求与其相应的传出响应联系起来。这也是我想在生产应用程序中推广的内容 在Spring中记录REST服务方面,我可以采用哪些最

我有一个SpringREST服务,有时当我请求REST服务时,我会得到一个HTTP401。我正在调查这个问题,这是间歇性的,并非总是发生。(每次发送的请求都是一样的)。我还集成了swagger来提供REST文档。 我正在将我的SpringREST服务作为一个webapp部署到Tomcat7

  • 即使请求是未经验证的请求,我如何记录传入和传出的HTTP请求。我希望能够将所有传入的请求与其相应的传出响应联系起来。这也是我想在生产应用程序中推广的内容

  • 在Spring中记录REST服务方面,我可以采用哪些最佳实践,我可以使用Spring或Tomcat提供的任何特性来更好地记录和调查


  • 谢谢

    也许最好的方法是将
    日志框架
    与定制的
    javax.servlet.Filter
    结合使用。它可以独立于应用程序中使用的其他环境(例如SpringMVC或Struts)跟踪所有HTTP请求/响应

    在这种情况下,日志必须与其他日志分开工作,这一点很重要 部分应用程序,否则它将依赖于某些组件,不能反映实际的低级别事件,或者根本不能被破坏

    我可以建议您使用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>
    
    
    提过滤器
    ch.qos.logback.access.servlet.TeeFilter
    提过滤器
    /*
    

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

    Spring有一个默认过滤器来执行此操作,请参见。如果您想要更多,请使用诸如集中式日志记录/跟踪之类的工具。