我正在尝试使用springcloudsleuth在我的kotlin应用程序中实现分布式跟踪。我要把这些数据发给数据狗。现在我可以跟踪我的日志,但我想添加一些额外的数据跨度。假设我想添加有关用户的信息,并能够在datadog中看到它。span标签对它有好处吗?我正在将json格式的日志发送到datadog,但是我不能在这里添加标记(traceid和spanid被注入)。logback配置:
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<timestamp/>
<version/>
<message/>
<loggerName/>
<threadName/>
<logLevel/>
<logLevelValue/>
<callerData/>
<stackTrace/>
<rootStackTraceElement/>
<context/>
<mdc/>
<tags/>
<logstashMarkers/>
<arguments/>
</providers>
</encoder>
grad尔:
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation("org.springframework.cloud:spring-cloud-starter-netflix-eureka-server")
implementation("org.springframework.cloud:spring-cloud-starter-vault-config")
implementation("org.springframework.cloud:spring-cloud-starter-sleuth")
implementation("org.springframework.boot:spring-boot-starter-actuator")
implementation("ch.qos.logback:logback-classic:1.2.3")
implementation("net.logstash.logback:logstash-logback-encoder:6.6")
implementation("org.zalando:logbook-spring-boot-starter:2.4.2")
developmentOnly("org.springframework.boot:spring-boot-devtools")
runtimeOnly("io.micrometer:micrometer-registry-datadog")
testImplementation("org.springframework.boot:spring-boot-starter-test")
加上标签我正在努力
@NewSpan
fun newSpanTest() {
tracer.currentSpan()!!.tag("user", "123")
log.info("other span")
otherTestService.sameSpanTest()
}
日志示例:
{"@timestamp":"2021-03-09T21:04:46.953+01:00","@version":"1","message":"other span","logger_name":"com.microservices.text.rpg.servicediscovery.TestService","thread_name":"http-nio-8761-exec-3","level":"INFO","level_value":20000,"caller_class_name":"com.microservices.text.rpg.servicediscovery.TestService","caller_method_name":"newSpanTest","caller_file_name":"TestService.kt","caller_line_number":25,"traceId":"e61fd165d7c84776","spanId":"5e61f9b51b51619b"}
那个“用户”不应该先注入mdc,然后再注入日志吗?
1条答案
按热度按时间kmpatx3s1#
热释光;博士
spring.sleuth.baggage.correlation-fields
自动将行李值设置为slf4j的mdc,因此您只需设置baggage字段。带背景的较长版本
我想你用的是现成的侦探(用的是勇敢的):
首先熟悉标签、行李及其区别;你也可以在《勇敢的医生》里读到他们
查一下勇敢的
ScopeDecorator
,CorrelationScopeDecorator
以及MDCScopeDecorator
这个spring.sleuth.baggage.correlation-fields
属性会自动将baggage值设置为slf4j的mdc,因此您只需设置baggage字段。另外,使用
MDCScopeDecorator
,您可以通过编程方式将baggage值设置为slf4j的mdc,您可以在sleuth docs中看到如何进行设置: