在Spring Boot 2中,记录主体的最有效方法是什么?

时间:2018-07-16 23:37:54

标签: java spring-boot logging jax-rs spring-boot-actuator

我曾经使用此命令将请求记录在JAX-RS的过滤器中

@Provider
public class RequestLoggingFilter implements ContainerRequestFilter {
    @Context
    private HttpServletRequest servletRequest;

    @Override
    public void filter(ContainerRequestContext requestContext) throws IOException {

        BufferedInputStream stream = new 
        BufferedInputStream(requestContext.getEntityStream());
        String payload = IOUtils.toString(stream, "UTF-8");
        requestContext.setEntityStream(IOUtils.toInputStream(payload, "UTF-8"));
    }

}

我正在尝试在Spring Boot 2中做类似的事情,并且尝试使用过滤器,拦截器和执行器。一看我就失去了尸体。在春季靴子2中,执行器的轨迹不支持记录主体,是否还有其他方法可以记录请求和响应主体而不丢失它?

1 个答案:

答案 0 :(得分:0)

您可能会在这里找到所需的一切:http://www.baeldung.com/spring-http-logging

  

Spring提供了一个内置的解决方案来记录有效负载。我们可以用   通过使用以下方式插入Spring应用程序中,即可获得现成的过滤器   配置。

     

AbstractRequestLoggingFilter是一个过滤器,它提供了基本的   日志功能。子类应覆盖beforeRequest()   和afterRequest()方法来执行实际的日志记录   请求。

     

Spring框架提供了三个具体的实现类,   可用于记录传入的请求。这三个类是:

     

CommonsRequestLoggingFilter Log4jNestedDiagnosticContextFilter   (不建议使用)ServletContextRequestLoggingFilter现在,让我们继续   CommonsRequestLoggingFilter并将其配置为捕获传入   请求记录。