Получить содержимое CommonsRequestLoggingFilter в коде Java - PullRequest
0 голосов
/ 17 января 2019

Я хочу внедрить 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 голосов
/ 17 января 2019

Приложение 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...