Добавьте значение заголовка к MD C на уровне StandardWrapperValve в Tomcat Spring. - PullRequest
0 голосов
/ 29 января 2020

В моем приложении я получаю 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, но этот класс является окончательным, и перенос его вызывает другие проблемы.

...