У меня есть приложение Spring MVC, в котором я реализовал класс, который расширяет HandlerInterceptorAdapter для выполнения некоторых операций внутри preHandle, postHandle и afterCompletion до того, как какой-либо контроллер будет выполнен. ниже - это то, что я наблюдаю.Spring MVC HandlerInterceptorAdapter Отсутствует slf4j Logback Trace ID
Вход в журнал для предварительной регистрации леса AppTime: 00: 30: 01.230 | Тема: [http-nio-8080-exec-1] | Уровень: INFO | Класс: hello.extractor | X-Span-Export = false, X-B3-SpanId = 3aad3f52e26eb59d, X-B3-TraceId = 3aad3f52e26eb59d | Msg: Внутри preHandle
Вход Вход для postHandle регистрации AppTime: 00: 30: 01.394 | Тема: [http-nio-8080-exec-1] | Уровень: INFO | Класс: hello.extractor | X-Span-Export = false, X-B3-SpanId = 3aad3f52e26eb59d, X-B3-TraceId = 3aad3f52e26eb59d | Msg: Внутри postHandle
Вход Вход для afterCompletionlogging AppTime: 00: 30: 01.395 | Тема: [http-nio-8080-exec-1] | Уровень: INFO | Класс: hello.extractor | | Msg: Внутри afterCompletion.
Если вы видите, что в третьей записи отсутствует идентификатор трассировки и идентификатор пробела. Любая идея о том, как разрешить это?
общественного класс Extractor расширяет HandlerInterceptorAdapter {
private static Logger logger = LoggerFactory.getLogger(HttpHeaderExtractor.class);
@Autowired
public Extractor() {
}
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
logger.info("Inside preHandle");
return true;
}
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
logger.info("Inside postHandle");
}
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
logger.info("Inside afterCompletion");
}
}
показать свой код для 'HandlerInterceptorAdapter' и соответствующей конфигурации журнала –
Можете ли вы разместить свой полный образец где-нибудь? У вас есть тот же поток, но, похоже, кажется, что 'afterCompletion'' TraceHandlerInterceptor' закрыл диапазон до того, как он достиг вашего обработчика. Вы должны убедиться, что ваш перехватчик выполнен до «TraceHandlerInterceptor». Но, не видя образца, это только мои предположения. –
Здравствуйте. Я добавил пример кода. @MarcinGrzejszczak –