我曾经使用此命令将请求记录在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中,执行器的轨迹不支持记录主体,是否还有其他方法可以记录请求和响应主体而不丢失它?
答案 0 :(得分:0)
您可能会在这里找到所需的一切:http://www.baeldung.com/spring-http-logging
Spring提供了一个内置的解决方案来记录有效负载。我们可以用 通过使用以下方式插入Spring应用程序中,即可获得现成的过滤器 配置。
AbstractRequestLoggingFilter是一个过滤器,它提供了基本的 日志功能。子类应覆盖beforeRequest() 和afterRequest()方法来执行实际的日志记录 请求。
Spring框架提供了三个具体的实现类, 可用于记录传入的请求。这三个类是:
CommonsRequestLoggingFilter Log4jNestedDiagnosticContextFilter (不建议使用)ServletContextRequestLoggingFilter现在,让我们继续 CommonsRequestLoggingFilter并将其配置为捕获传入 请求记录。