spring cloud sleuth 如何将跟踪信息添加到 logback 日志行
How spring cloud sleuth adds tracing information to logback log lines
我有基于 Spring Boot 的 Web 应用程序,它使用 logback 进行日志记录。
我还从 spring boot 继承了一些 logback 默认值:
<include resource="org/springframework/boot/logging/logback/base.xml"/>
我想开始记录跟踪信息,所以我添加了:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
Sleuth 将跟踪信息添加到日志行,但我在模式中找不到任何 %X
或 %mdc
:https://github.com/spring-projects/spring-boot/blob/2.3.x/spring-boot-project/spring-boot/src/main/resources/org/springframework/boot/logging/logback/defaults.xml
Sleuth 如何将跟踪信息添加到日志行中?
我使用 spring-cloud-starter-parent
Hoxton.SR9
parent 带来 Spring Boot 2.3.5.RELEASE
和 spring-cloud-starter-sleuth
2.2.6.RELEASE
(tl;底部的博士)
根据这个问题,我想您已经知道 traceId
和 spanId
已放入 MDC。
如果您查看 log integration section of the sleuth docs you will see that the tracing info in the example is between the log level (ERROR
) and the pid (97192
). If you try to match this with the logback config,您会发现日志级别和 pid 之间没有任何内容:${LOG_LEVEL_PATTERN:-%5p} ${PID:- }
因此跟踪信息如何到达那里可能是一个有效的问题。
如果你再看看文档,它是这样说的:
This log configuration was automatically setup by Sleuth. You can disable it by disabling Sleuth via spring.sleuth.enabled=false
property or putting your own logging.pattern.level
property.
这仍然没有明确解释该机制,但它给了你一个巨大的提示:
putting your own logging.pattern.level
property
基于此,您可以认为 日志级别和 pid 之间没有任何东西,Sleuth 只是覆盖日志级别并将跟踪信息放入其中。如果您搜索文档在代码中提到的 属性,您会发现 it is exactly what happens:
TL;DR
Sleuth 覆盖日志级别模式并将跟踪信息添加到其中:
map.put("logging.pattern.level", "%5p [${spring.zipkin.service.name:" + "${spring.application.name:}},%X{traceId:-},%X{spanId:-}]");
我有基于 Spring Boot 的 Web 应用程序,它使用 logback 进行日志记录。
我还从 spring boot 继承了一些 logback 默认值:
<include resource="org/springframework/boot/logging/logback/base.xml"/>
我想开始记录跟踪信息,所以我添加了:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
Sleuth 将跟踪信息添加到日志行,但我在模式中找不到任何 %X
或 %mdc
:https://github.com/spring-projects/spring-boot/blob/2.3.x/spring-boot-project/spring-boot/src/main/resources/org/springframework/boot/logging/logback/defaults.xml
Sleuth 如何将跟踪信息添加到日志行中?
我使用 spring-cloud-starter-parent
Hoxton.SR9
parent 带来 Spring Boot 2.3.5.RELEASE
和 spring-cloud-starter-sleuth
2.2.6.RELEASE
(tl;底部的博士)
根据这个问题,我想您已经知道 traceId
和 spanId
已放入 MDC。
如果您查看 log integration section of the sleuth docs you will see that the tracing info in the example is between the log level (ERROR
) and the pid (97192
). If you try to match this with the logback config,您会发现日志级别和 pid 之间没有任何内容:${LOG_LEVEL_PATTERN:-%5p} ${PID:- }
因此跟踪信息如何到达那里可能是一个有效的问题。
如果你再看看文档,它是这样说的:
This log configuration was automatically setup by Sleuth. You can disable it by disabling Sleuth via
spring.sleuth.enabled=false
property or putting your ownlogging.pattern.level
property.
这仍然没有明确解释该机制,但它给了你一个巨大的提示:
putting your own
logging.pattern.level
property
基于此,您可以认为 日志级别和 pid 之间没有任何东西,Sleuth 只是覆盖日志级别并将跟踪信息放入其中。如果您搜索文档在代码中提到的 属性,您会发现 it is exactly what happens:
TL;DR
Sleuth 覆盖日志级别模式并将跟踪信息添加到其中:
map.put("logging.pattern.level", "%5p [${spring.zipkin.service.name:" + "${spring.application.name:}},%X{traceId:-},%X{spanId:-}]");