我们有三个模块Gateway
使用spring-cloud-gateway
、Service1
和Service2
。 网关呼叫service1
和service1
呼叫service2
。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, transactionID);
我们还设置了如下所示的 Slueth 属性,以便将其打印在日志中并转发到下一个服务(service1
和service2
sleuth:
baggage-keys:
- X-CUST_TRAN_ID
log:
slf4j:
whitelisted-mdc-keys:
- X-CUST_TRAN_ID
我们面临的问题是
X-CUST_TRAN_ID
值通过请求和响应发送,并打印在service1
和service2
的日志中,但不打印在Gateway
本身中。
它不会打印在GlobalFilter
的日志或PreFilter
日志语句中,而是打印在PostFilters
日志语句中。由于CUST_TRAN_ID
是在GlobalFilter
的过滤器中设置的,因此在设置为上下文后,它应该打印在日志语句中。
请帮助是否有更好的方法来设置传播字段以及在日志语句中打印。
侦探使用自己的过滤器初始化其上下文,该过滤器具有默认顺序。 您可以尝试使用以下属性为侦探过滤器提供最高优先级:
spring:
sleuth:
web:
filter-order: -2147483648