У меня есть следующие настройки:
Прокси (P) - HTTP -> Приложение Spring Boot 2 (X) - HTTP -> Приложение Spring Boot 1 (Y)
Прокси-сервер отправляет requestId
в качестве заголовка HTTP, который мне нужно включить в журналы X и Y.
Для приложения X я легко мог бы сделать это с поддержкой Spring Cloud Sleuth 2, используя
spring:
sleuth:
propagation-keys: requestId
и создание CurrentTraceContext
реализации с вдохновением из Slf4jCurrentTraceContext
, где я добавляю
MDC.put("requestId", ExtraFieldPropagation.get(currentSpan, "requestId"));
и тогда я могулегко добавьте его в журналы, используя следующий шаблон журнала:
%d{yy-MM-dd E HH:mm:ss.SSS} %5p [component=${springAppName},requestId=%X{requestId:-}] %m%n"
Но теперь мне нужно распространить requestId
также на приложение Y.
К сожалению, я не могу использовать полезности, представленные в Spring Cloud Sleuth 2.0 (например, TraceContext из смелой библиотеки), поскольку это приложение Spring Boot 1.x.
Хотите знать, какие варианты?
Я думал о том, чтобы расширить Slf4jSpanLogger
и ввести в DefaultTracer
, но не уверен, как получить requestId
, в котором нет TraceContext в SpanLogger.