我有基于Spring的web应用程序,它使用logback进行日志记录。
我还继承了spring引导中的一些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
如何将跟踪信息添加到日志行中?
我使用spring-cloud-starter-parent Hoxton.SR9父母,它带来了Spring Boot 2.3.5.RELEASE和spring-cloud-starter-sleuth 2.2.6.RELEASE。
发布于 2021-01-22 19:01:13
(tl;dr位于底部)
从这个问题中,我想您已经知道traceId和spanId放在MDC中了。
如果您查看侦探文档的日志集成部分,您将看到示例中的跟踪信息在日志级别(ERROR)和pid (97192)之间。如果您尝试将其与logback配置匹配,您将看到日志级别与pid:${LOG_LEVEL_PATTERN:-%5p} ${PID:- }之间没有任何关系,因此跟踪信息是如何获得的,这可能是一个有效的问题。
如果你再看一看文档,上面写着:
这个日志配置是由Sleuth自动设置的。您可以通过禁用
spring.sleuth.enabled=false属性或放置您自己的logging.pattern.level属性来禁用它。
它仍然没有明确解释该机制,但它给了您一个巨大的提示:
放置您自己的
logging.pattern.level属性
基于此,您可以认为日志级别和pid之间没有什么关系,Sleuth只是覆盖日志级别并将跟踪信息放入其中。如果您搜索文档在代码中提到的属性,您将发现这正是发生的事
TL;DR
侦探覆盖日志级别模式,并将跟踪信息添加到其中:
map.put("logging.pattern.level", "%5p [${spring.zipkin.service.name:" + "${spring.application.name:}},%X{traceId:-},%X{spanId:-}]");https://stackoverflow.com/questions/65846859
复制相似问题