Java Spring Boot - 使用有效负载

时间:2017-06-27 09:00:25

标签: java spring rest logging

我目前正在使用Spring Boot将请求/响应日志记录集成到REST服务中。对于请求,我选择了Spring提供的CommonsRequestLoggingFilter:

@Bean
public CommonsRequestLoggingFilter requestLoggingFilter() {
    CommonsRequestLoggingFilter loggingFilter = new CommonsRequestLoggingFilter();
    loggingFilter.setIncludeClientInfo(false);
    loggingFilter.setIncludeQueryString(true);
    loggingFilter.setIncludePayload(true);
    loggingFilter.setMaxPayloadLength(1024);

    return loggingFilter;
}

在配置文件中:

logging.level.org.springframework.web.filter.CommonsRequestLoggingFilter=DEBUG

然而,对于回应,似乎没有相应的类?是否有类似的方法在Spring中记录服务器响应?

编辑: 特别是,我在上面的设置中看到的内容在BeforeRequest中没有任何内容:

2017-06-28 09:32:32.258 DEBUG 22872 --- [http-nio-8081-exec-2] o.s.w.f.CommonsRequestLoggingFilter      : Before request [uri=/someApp/someObject]

请求有效负载为AfterRequest:

2017-06-28 09:32:32.272 DEBUG 22872 --- [http-nio-8081-exec-2] o.s.w.f.CommonsRequestLoggingFilter      : 
After request [uri=/someApp/someResource;payload={
  "someObject":   {
                    "lastName": "Doe",
                    "reference": "123456789"
              }
    }
]

日志中没有实际的响应。

3 个答案:

答案 0 :(得分:2)

没关系,

我最终实现了自己的过滤器,也可以记录响应。基于GenericFilterBean,包装HttpResponse和HttpRequest,这样流就不会被关闭。

我仍然很奇怪,Spring提供了一个用于记录请求的类,但不提供响应...

答案 1 :(得分:1)

如果您需要监控和管理您的应用,请考虑使用actuator。它能够开箱即用地记录请求\响应。

答案 2 :(得分:0)

您可以尝试在application.properties中设置以下行以记录请求/响应

logging.level.org.springframework.ws.server.MessageTracing.sent=TRACE