3 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個贊
添加 spring-cloud-sleuth 依賴項(xiàng)后,我在日志文件中沒有看到 TraceId 或 SpanId。我們使用log4j2和slf4j。顯然,這可以在 logback 中開箱即用,但不能在 log4j2 中使用。似乎其他人已經(jīng)通過在配置文件中添加properties=true來成功使用json布局,但我們使用模式布局,并且布爾值似乎不可用。我已正確配置模式,但這并不重要,因?yàn)楫?dāng)我在 MDCPatternConverter 類中設(shè)置調(diào)試器時,線程上下文映射為空。我可以更改代碼并直接設(shè)置 MDC 值,但我們下游的人出于某種原因希望我們使用此依賴項(xiàng)。
添加了 log4j-JUL 添加了 spring-boot-starter-log4j2
@Bean
ScopeDecorator threadContextScopeDecorator() {
return new ThreadContextScopeDecorator();
}

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個贊
您需要做的就是以下操作:
添加 io.zipkin.brave:brave-context-log4j2 依賴項(xiàng)
添加 org.springframework.boot:spring-boot-starter-log4j2 依賴
添加 org.springframework.cloud:spring-cloud-starter-sleuth 依賴
排除默認(rèn)的 spring 日志記錄
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
在 log4j2.xml 中調(diào)整模式布局
<PatternLayout pattern="[%d{yyy-MM-dd HH:mm:ss:SSS}] [%X{traceId}, %X{spanId}] {%-5level} - %l - %m%n" />

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超6個贊
如果您想在生成的線程中登錄,則需要將 MDC 線程本地上下文從當(dāng)前線程復(fù)制到新線程中。
在主線程中...
final Map<String, String> threadContext = MDC.getCopyOfContextMap();
Runnable mythread = () -> { MDC.setContextMap(threadContext);
yourCode(); };
new Thread(mythread).start();
添加回答
舉報