У нас есть три модуля Gateway с использованием Spring-Cloud-Gateway, Service1 и Service2. Вызов службы шлюза service1 и вызовы service1. Service1 и Service2 используют пружинный веб-шлюз. В шлюзе есть 3 фильтра. глобальный фильтр, предварительный фильтр и постфильтр.
spring:
cloud:
gateway:
default-filters:
- name: GlobalFilter
routes:
- id: service1
uri: http://localhost:9091/
predicates:
- Path=/service1/**
filters:
- name: PreFilter
- name: PostFilter
В глобальном фильтре мы читаем значение из настройки тела запроса, установленной в качестве нового ключа багажа.
ExtraFieldPropagation.set (tracer.currentSpan () .context (), X-CUST_TRAN_ID ,actionID);
Мы также установили свойства слэта, как показано ниже, чтобы они печатались в журналах и передавались следующим сервисам (service1 и service2)
sleuth:
baggage-keys:
- X-CUST_TRAN_ID
log:
slf4j:
whitelisted-mdc-keys:
- X-CUST_TRAN_ID
Проблема, с которой мы сталкиваемся:
Значения X-CUST_TRAN_ID передаются по запросу и ответу и печатаются в журналах service1 и service2, но не в самом шлюзе.
Не печатается либо в журнале GlobalFilter, либо в операторах журнала PreFilter, но печатается в операторах журнала PostFilters. Поскольку CUST_TRAN_ID установлен в фильтре GlobalFilter, он должен быть напечатан в операторах журнала после установки в контекст.
Пожалуйста, помогите лучше настроить поле для распространения, а также печати в операторах журнала.