Я реализовал CommonsRequestLoggingFilter logFilter () в Spring Boot, но он записывает необходимую информацию после выполнения фактического метода.Я хочу, чтобы все эти журналы были напечатаны в начале, прежде чем будет выполнен фактический метод.В настоящее время я использую Spring Boot 2.1.1 Release версию.
Я уже пробовал HandlerInterceptor , но для печати именно того, что делает CommonsRequestLoggingFilter, требуется много усилий.Я хотел бы использовать встроенную функцию Spring.Код приведен ниже.
@Bean
public CommonsRequestLoggingFilter logFilter() {
CommonsRequestLoggingFilter filter = new CommonsRequestLoggingFilter();
filter.setIncludeQueryString(true);
filter.setIncludePayload(true);
filter.setIncludeHeaders(true);
filter.setIncludeClientInfo(true);
filter.setMaxPayloadLength(10000);
filter.setAfterMessagePrefix("\n-------setAfterMessagePrefix--------\n");
filter.setAfterMessageSuffix("\n-------------setAfterMessageSuffix-----------------\n");
filter.setBeforeMessagePrefix("\n=========setBeforeMessagePrefix========\n");
filter.setBeforeMessageSuffix("\n===============setBeforeMessageSuffix================\n");
return filter;
}
Фактический результат выглядит следующим образом
========= setBeforeMessagePrefix ======== uri = / em/ login; client = 0: 0: 0: 0: 0: 0: 0: 1; заголовки = {хост = [localhost: 8080], соединение = [keep-alive], длина содержимого = [95], принять =[application / json], origin = [http://localhost:8080], user-agent = [Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 72.0.3626.109 Safari / 537.36], referer = [http://localhost:8080/em/swagger-ui.html], accept-encoding = [gzip, deflate, br], accept-language = [en-US, en; q = 0.9], Content-Type = [application / json; charset = UTF-8]} =============== setBeforeMessageSuffix ================
----- НЕКОТОРЫЕ Детали исключения---------
------- setAfterMessagePrefix -------- uri = / em / login; client = 0: 0: 0: 0: 0:0: 0: 1; заголовки = {хост = [localhost: 8080], соединение = [keep-alive], длина контента = [95], принять = [приложение / json], источник = [http://localhost:8080],user-agent = [Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537,36 (KHTML, как Gecko) Chrome / 72.0.3626.109 Safari /537.36], referer = [http://localhost:8080/em/swagger-ui.html], accept-encoding = [gzip, deflate, br], accept-language = [en-US, en; q = 0.9], Content-Type = [application / json; charset= UTF-8]}; payload = {"hostName": "string", "password": "string", "token": "string", "userName": "string"} ------------- setAfterMessageSuffix -----------------
Но на самом деле я хочу, чтобы следующее было в верхней части файла журнала дляанализ, который приведен ниже.
------- setAfterMessagePrefix -------- uri = / em / login; client = 0: 0: 0: 0: 0:0: 0: 1; заголовки = {хост = [localhost: 8080], соединение = [keep-alive], длина контента = [95], принять = [приложение / json], источник = [http://localhost:8080],user-agent = [Mozilla / 5.0 (Windows NT 10.0;Win64;x64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 72.0.3626.109 Safari / 537.36], referer = [http://localhost:8080/em/swagger-ui.html], accept-encoding = [gzip, deflate, br], accept-language = [en-US, en; q = 0,9], Content-Type = [application / json; charset = UTF-8]}; payload = {"hostName": "string", "password": "string", "token": "string"," userName ":" string "} ------------- setAfterMessageSuffix -----------------
------------- Некоторые исключения ------------