我如何才能登录的RESTful发布数据?(How can I log RESTful post da

2019-06-28 05:14发布

我们通过Spring MVC暴露REST服务。 我们使用HandlerExceptionResolver记录异常。 目前,我们记录以下内容:

  • 异常及其堆栈跟踪
  • 该网址
  • 请求头

它将使调试容易,如果我们还可以在登录后的JSON数据,以及。 任何建议如何获得呢?

Answer 1:

你需要一个过滤器,将被真实阅读时,它保存请求的身体,后来提供的数据保存到您的例外记录。

Spring中包含AbstractRequestLoggingFilter ,做了类似的事情。 虽然它不能直接适用于你的问题,你可以使用它作为参考,以实现自己的过滤器。



Answer 2:

这种加入代表应用程序的配置类:

import javax.servlet.Filter;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.filter.AbstractRequestLoggingFilter;

....

@Bean
public Filter loggingFilter(){
    AbstractRequestLoggingFilter f = new AbstractRequestLoggingFilter() {

        @Override
        protected void beforeRequest(HttpServletRequest request, String message) {
            System.out.println("beforeRequest: " +message);
        }

        @Override
        protected void afterRequest(HttpServletRequest request, String message) {
            System.out.println("afterRequest: " +message);
        }
    };
    f.setIncludeClientInfo(true);
    f.setIncludePayload(true);
    f.setIncludeQueryString(true);

    f.setBeforeMessagePrefix("BEFORE REQUEST  [");
    f.setAfterMessagePrefix("AFTER REQUEST    [");
    f.setAfterMessageSuffix("]\n");
    return f;
}

你可能要注释掉

   f.setIncludePayload(true);


Answer 3:

有记录的请求/响应的有效载荷没有简单的方法。 您可以使用Java Web过滤器拦截所有的请求和响应,并从流中读取JSON数据。 但有一个问题,当你将阅读从实际数据将从流枯竭的流数据。

因此,你必须实现实际的请求和响应物体的包装。 只有请求响应的复制版本将被记录。 我们已经实施了类似的解决方案如下一样,它满足了我们的要求:

http://www.wetfeetblog.com/servlet-filer-to-log-request-and-response-details-and-payload/431

http://angelborroy.wordpress.com/2009/03/04/dump-request-and-response-using-javaxservletfilter/



文章来源: How can I log RESTful post data?