В моем приложении springboot мы регистрируем запросы / ответы контроллера, используя org.springframework.web.util.ContentCachingRequestWrapper
и org.springframework.web.util.ContentCachingResponseWrapper
. Ниже приведена ссылка для примера кода.
CustomLoggingFilter:
https://stackoverflow.com/a/42023374/1958669
В приложении присутствует interceptor
. Теперь проблема состоит в том, чтобы регистрировать только его имя перехватчика, приходящее в className. Итак, для получения фактического имени контроллера я попытался получить имя класса в перехватчике. Но это дает org.springframework.web.util.ContentCachingRequestWrapper
.
CustomWebMvcConfig:
@Configuration
public class CustomWebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new CustomLogInterceptor());
}
}
CustomLogInterceptor:
public class CustomLogInterceptor extends HandlerInterceptorAdapter {
private static final Logger logger = LogManager.getLogger(CustomLogInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception{
//Some operation
}
}
Получение логов в следующем формате:
time = "2019-03-18T09: 59: 51,001Z", thread = "[o-auto-1exec-]", class = «a.b.c.CustomLoggingFilter», message = «Payload_1«
time = "2019-03-18T09: 59: 51,001Z", thread = "[o-auto-1-xec-1]", class = «a.b.c.CustomLoggingFilter», message = «Payload_2« »
Мой вопрос: как получить фактическое имя ControllerClass в журналах, а не LoggingFilterClass (тот, который использует org.springframework.web.util.ContentCachingRequestWrapper
)