本文介紹了Spring-Cloud-Sleuth使圖案布局中的MDC屬性能夠記錄TraceID的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
在添加了Spring-Cloud-Sleuth依賴項之后,我沒有在日志文件中看到TraceID或span ID。我們使用log4j2和slf4j。顯然,這可以開箱即用地使用Logback,但不能使用log4j2。似乎其他人已經通過在配置文件中添加屬性=true成功地使用了json布局,但我們使用的是模式布局,似乎不提供Boolean。我已經正確地配置了模式,但這并不重要,因為當我在MDCPatternConverter類中設置調試器時,線程上下文映射為空。我可以更改代碼并直接設置MDC值,但出于某種原因,我們下游的人希望我們使用這種依賴關系。
添加了7月的log4j
添加了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>
推薦答案
Sleuth暗中使用Brave。您必須將io.zipkin.brave:brave-context-log4j2
依賴項添加到類路徑中。有關更多信息,請查看Brave的文檔https://github.com/openzipkin/brave/tree/master/context/log4j2為方便起見,我將在此處復制
這會將跟蹤和范圍ID添加到Log4J 2線程上下文中,以便您
可以相應地搜索或聚合日志。要啟用此功能,請配置Brave。跟蹤
線程上下文作用域裝飾符如下:
只需創建ThreadContextScopeDecorator
類型的Bean,Sleuth將獲取它
@Bean
ScopeDecorator threadContextScopeDecorator() {
return new ThreadContextScopeDecorator();
}
這篇關于Spring-Cloud-Sleuth使圖案布局中的MDC屬性能夠記錄TraceID的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,