添加自定义“具有Alpha数值的跟踪ID,并将其吐出到应用程序日志中”

时间:2019-10-07 15:06:34

标签: spring-boot spring-cloud-sleuth

我正在使用Sleuth 2.1.3。 我想添加一个自定义的“跟踪ID”作为具有字母数字值的“相关ID”,并想吐出带有spanid和父id的日志。 如果我使用以下实现创建新的自定义跟踪ID。它会打印在日志中吗?

我尝试了以下实现,但在日志中看不到任何自定义跟踪 https://github.com/openzipkin/zipkin-aws/blob/release-0.11.2/brave-propagation-aws/src/main/java/brave/propagation/aws/AWSPropagation.java

Tracing.newBuilder().propagationFactory(
  ExtraFieldPropagation.newFactoryBuilder(B3Propagation.FACTORY)
                       .addField("x-vcap-request-id")
                       .addPrefixedFields("x-baggage-", Arrays.asList("country-code", "user-id"))
                       .build()
);

我尝试使用来自https://cloud.spring.io/spring-cloud-sleuth/reference/html/#propagation的上述代码,但在日志中未看到任何自定义跟踪ID

2 个答案:

答案 0 :(得分:0)

您已将B3Propagation.FACTORY作为传播工厂的实现进行了传递,因此您明确声明要使用默认的B3标头。您已经说过,您还希望传播字母数字的其他字段。然后,在日志分析工具中,您可以定义要使用自定义字段作为跟踪ID,但这并不意味着默认的X-B3-TraceId字段将被更改。如果要使用Sleuth可以理解的自定义字段作为跟踪ID,则需要更改日志记录格式并实现其他传播工厂Bean。

答案 1 :(得分:0)

对我有用的一种方法是 使用ExtraFieldPropagation 并在传播键下的侦探属性中添加这些键 和列入白名单的键

示例代码   '@Autowired Tracer跟踪器;

Span currentSpan = tracer.nextSpan().start();
ExtraFieldPropagation.set(
      "customkey", "customvalue");
sleuth:
    log:
      slf4j:
        whitelisted-mdc-key : customkey
propagation:
      tag:
        enabled: true
    propagation-keys : customkey '