在Java代码中获取CommonsRequestLoggingFilter内容

时间:2019-01-17 09:03:57

标签: java spring spring-rest spring-logback spring-filter

我想在我的应用程序中实现CommonsRequestLoggingFilter并将请求和响应转换为Java代码:

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

如何将有效负载放入Rest控制器代码中?示例:

@RestController
public class LoggingDemoController {

    @GetMapping("/demo/greeting")
    public String sayHello(){

        // Get here the payload from CommonsRequestLoggingFilter

        return "Hello Stranger !!!";
    }
}

这有可能吗?

1 个答案:

答案 0 :(得分:0)

可以通过添加bean定义来配置Spring Boot应用程序以启用请求日志记录:

@Configuration
public class RequestLoggingFilterConfig {

    @Bean
    public CommonsRequestLoggingFilter logFilter() {
        CommonsRequestLoggingFilter filter
          = new CommonsRequestLoggingFilter();
        filter.setIncludeQueryString(true);
        filter.setIncludePayload(true);
        filter.setMaxPayloadLength(10000);
        filter.setIncludeHeaders(false);
        filter.setAfterMessagePrefix("REQUEST DATA : ");
        return filter;
    }
}

此外,此日志记录过滤器要求将日志级别设置为DEBUG

<logger name="org.springframework.web.filter.CommonsRequestLoggingFilter">
    <level value="DEBUG" />
</logger>