Spring 如何在文件中记录HttpRequest和HttpResponse?

Spring 如何在文件中记录HttpRequest和HttpResponse?,spring,spring-mvc,spring-data,spring-data-rest,Spring,Spring Mvc,Spring Data,Spring Data Rest,有人能解释一下在文件中记录HttpRequest和HttpResponse的技术吗 我们正在使用SpringMVC/SpringREST 我们想要的是在处理请求之前拦截请求并记录它。 同样,在发送响应之前拦截响应并记录它 提前非常感谢。为记录请求,Spring拥有这个类(实际上是其中的一个子类)。这可用于记录传入请求(处理前后) 根据配置,这可能包括有效负载、客户端信息和完整URL(包括erquest参数)。默认情况下,这三个选项都是禁用的,但可以通过配置启用(有关更多信息,请参阅javadoc

有人能解释一下在文件中记录HttpRequest和HttpResponse的技术吗

我们正在使用SpringMVC/SpringREST

我们想要的是在处理请求之前拦截请求并记录它。 同样,在发送响应之前拦截响应并记录它


提前非常感谢。

为记录请求,Spring拥有这个类(实际上是其中的一个子类)。这可用于记录传入请求(处理前后)

根据配置,这可能包括有效负载、客户端信息和完整URL(包括erquest参数)。默认情况下,这三个选项都是禁用的,但可以通过配置启用(有关更多信息,请参阅javadoc)


请求日志过滤器
org.springframework.web.filter.commonRequestLoggingFilter
包括客户信息
真的
包括付款
真的
包括查询字符串
真的
请求日志过滤器
调度员服务

过滤器现在将使用Commons日志记录器将所有内容记录到日志文件中。

接受的答案已经正确,添加了基于注释的配置。将以下bean添加到您的配置中

@Bean
public CommonsRequestLoggingFilter requestLoggingFilter() {
    CommonsRequestLoggingFilter loggingFilter = new CommonsRequestLoggingFilter();
    loggingFilter.setIncludeClientInfo(true);
    loggingFilter.setIncludeQueryString(true);
    loggingFilter.setIncludePayload(true);
    return loggingFilter;
}

为了记录请求,您可以将的子类之一添加到您的筛选链中。@M.Deinum:为什么不将您的答案作为答案而作为注释发布?可能与“我得不到有效负载”重复
@Bean
public CommonsRequestLoggingFilter requestLoggingFilter() {
    CommonsRequestLoggingFilter loggingFilter = new CommonsRequestLoggingFilter();
    loggingFilter.setIncludeClientInfo(true);
    loggingFilter.setIncludeQueryString(true);
    loggingFilter.setIncludePayload(true);
    return loggingFilter;
}