亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring-Cloud-Sleuth 在模式布局中啟用 MDC 屬性來記錄 TraceId

Spring-Cloud-Sleuth 在模式布局中啟用 MDC 屬性來記錄 TraceId

德瑪西亞99 2023-08-04 15:43:28
添加 spring-cloud-sleuth 依賴項后,我在日志文件中沒有看到 TraceId 或 SpanId。我們使用log4j2和slf4j。顯然,這可以在 logback 中開箱即用,但不能在 log4j2 中使用。似乎其他人已經通過在配置文件中添加properties=true來成功使用json布局,但我們使用模式布局,并且布爾值似乎不可用。我已正確配置模式,但這并不重要,因為當我在 MDCPatternConverter 類中設置調試器時,線程上下文映射為空。我可以更改代碼并直接設置 MDC 值,但我們下游的人出于某種原因希望我們使用此依賴項。添加了 log4j-JUL 添加了 spring-boot-starter-log4j2<Property name="STP_PATTERN">%d{yyyy-MM-dd HH:mm:ss,SSS zzz} %-5p  [%X{X-B3-TraceId} TEST %X{X-B3-SpanId} %t:%c{1}:%x] -%m%n     </Property>
查看完整描述

3 回答

?
浮云間

TA貢獻1829條經驗 獲得超4個贊

添加 spring-cloud-sleuth 依賴項后,我在日志文件中沒有看到 TraceId 或 SpanId。我們使用log4j2和slf4j。顯然,這可以在 logback 中開箱即用,但不能在 log4j2 中使用。似乎其他人已經通過在配置文件中添加properties=true來成功使用json布局,但我們使用模式布局,并且布爾值似乎不可用。我已正確配置模式,但這并不重要,因為當我在 MDCPatternConverter 類中設置調試器時,線程上下文映射為空。我可以更改代碼并直接設置 MDC 值,但我們下游的人出于某種原因希望我們使用此依賴項。

添加了 log4j-JUL 添加了 spring-boot-starter-log4j2

@Bean

ScopeDecorator threadContextScopeDecorator() {

return new ThreadContextScopeDecorator();

}


查看完整回答
反對 回復 2023-08-04
?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

您需要做的就是以下操作:

  • 添加 io.zipkin.brave:brave-context-log4j2 依賴項

  • 添加 org.springframework.boot:spring-boot-starter-log4j2 依賴

  • 添加 org.springframework.cloud:spring-cloud-starter-sleuth 依賴

  • 排除默認的 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 中調整模式布局


<PatternLayout pattern="[%d{yyy-MM-dd HH:mm:ss:SSS}] [%X{traceId}, %X{spanId}] {%-5level} - %l - %m%n" />



查看完整回答
反對 回復 2023-08-04
?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

如果您想在生成的線程中登錄,則需要將 MDC 線程本地上下文從當前線程復制到新線程中。


在主線程中...


 final Map<String, String> threadContext = MDC.getCopyOfContextMap();

 Runnable mythread = () -> { MDC.setContextMap(threadContext); 

                             yourCode(); };

 new Thread(mythread).start();


查看完整回答
反對 回復 2023-08-04
  • 3 回答
  • 0 關注
  • 284 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號