В моем приложении я получаю correlationId в заголовке, который я хочу добавить к каждой транзакции входа в систему.
В настоящее время я использую OncePerRequestFilter для этой цели. Я помещаю значение из заголовка в MD C и добавляю значение из MD C как поле json в шаблоне logback. Если заголовок отсутствует, значение генерируется случайным образом.
Проблема возникает, когда при обработке запроса возникает необработанное исключение. Это исключение регистрируется в классе org. apache .catalina.core.StandardWrapperValve и не имеет доступа к ранее установленному контексту MD C, поэтому поле json в журнале отсутствует.
From по некоторым причинам мы не хотим перехватывать все исключения.
Я пытался использовать ServletContextListener в качестве инициализатора в TomcatServletWebServerFactory, но в ServletContextEvent нет данных запроса, которые я мог бы добавить в MD C.
Другим вариантом будет отключение org. apache .catalina.core.ContainerBase регистрировать и вручную регистрировать все исключения в OncePerRequestFilter, а затем выбрасывать исключения дальше, но я боюсь, что могу скрыть другие важные журналы.
Другой вариант может переопределите StandardWrapperValve, но этот класс является окончательным, и перенос его вызывает другие проблемы.