集成sleuth 后,logback不显示应用名称,无法读取application.yml参数

我们知道,在spring cloud 中集成 sleuth , 就是服务链路追踪,

主要是通过appName,spanId,traceId来进行追踪,

在没有引入logback等时,在控制台,是可以看到sleuth 默认会打印:

注意[appname,traceId,spanId,exportable]来自MDC 的条目:

  • spanId:发生的特定操作的ID。
  • appname:记录跨度的应用程序的名称。
  • traceId:包含跨度的延迟图的ID。
  • exportable:是否应将日志导出到Zipkin。您何时希望跨度不可导出?当您要将某些操作包装在Span中并将其仅写入日志时。

但是在引入logback后,

logback-spring.xml 配置文件,如何配置:

<appender name = "consoleLog" class = "ch.qos.logback.core.ConsoleAppender">
   <layout class="ch.qos.logback.classic.PatternLayout">
      <pattern>
         %d ---[ provider ]--- [${applicationName},%X{X-B3-TraceId},%X{X-B3-SpanId},%X{X-B3-ParentSpanId},%X{X-Span-Export}] [%thread] %-5level %logger{50}           --- %msg%n
      </pattern>
   </layout>
</appender>

这里可以读取到:TraceId,SpanId,是否导出到Zipkin

但是打印当前应用名称。

那我们的解决方案就是从application.xml 配置文件中取读取。

但这里又存在一个问题,就是logback-spring.xml一般会在application.yml之前进行加载,所以我们直接用${applicationName}无法读取到。这时我们需要引入springProperty,提前声明好要用的name,就可以取到了。

https://www.jianshu.com/p/3dee6b898eda

猜你喜欢

转载自blog.csdn.net/u014209205/article/details/106720155