带SpringBoot的弹簧侦探(对数相关-未显示Traceid和SpanId)>

问题描述 投票:0回答:1

我有一个现有的Spring boot(2.2.0)应用程序,并尝试集成Spring cloud sleuth以获取自动跟踪和跨度ID。登录文件如下-

<configuration>

<property name="LOGS" value="./logs" />

<appender name="Console"
          class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
        <Pattern>
            %black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
        </Pattern>
    </layout>
</appender>

<appender name="RollingFile"
          class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOGS}/spring-boot-logger.log</file>
    <encoder
            class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
    </encoder>

    <rollingPolicy
            class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- rollover daily and when the file reaches 100 MegaBytes -->
        <fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd}.%i.log
        </fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>100MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
</appender>

<!-- LOG everything at specified level level -->
<root level="info">
    <appender-ref ref="RollingFile" />
    <appender-ref ref="Console" />
</root>

此用于登录的配置未按预期方式记录/显示traceId。据我所知,除了更新如下的pom.xml以外,不需要任何其他操作-

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-sleuth</artifactId>
            <version>2.2.0.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-sleuth</artifactId>
    </dependency>

令人惊讶的是,如果我在logback配置中包括以下内容-

<include resource="org/springframework/boot/logging/logback/base.xml"/>

Traceid,spanid和应用程序名称显示在console上。可能来自base.xml配置。

任何想法,我的登录文件或任何其他配置可能出什么问题吗?配置中缺少任何内容吗?

感谢您的任何帮助。

我有一个现有的Spring boot(2.2.0)应用程序,并尝试集成Spring cloud sleuth以获取自动跟踪和跨度ID。登录文件如下-[] [

Well sleuth通过覆盖/扩展日志模式的日志级别“字段”(在org.springframework.cloud.sleuth.autoconfig.TraceEnvironmentPostProcessor内部)将traceId和spanId写入日志。
因此在defaults.xml中(导入base.xml中),弹簧将pattern定义为:
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>

如您所见,是否定义了变量LOG_LEVEL_PATTERN,它是一个变量(然后在TraceEnvironmentPostProcessor中覆盖/扩展,如果没有,则默认为默认的级别模式%5p

因此,如果您进行

not包含base.xml侦探,将无法“调整”日志级别的模式,因为LOG_LEVEL_PATTERN则该模式中不存在。

根据文档说明(https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-logging),您

总是

应该在自定义logback.xml中包括base.xml,您还可以。

不推荐:尝试将日志级别模式定义为${LOG_LEVEL_PATTERN:-%5p}而不是%5p%-5level(但是,如果需要的话,包括base.xml的解决方案是正确的解决方案。

也:

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-custom-log-configuration列出了application。(properties | yml)字段,用于通过属性调整spring-boot日志记录。例如我有用于传播下游的自定义BaggageFields,我的application.properties可以在日志文件中看到它们,我按如下方式定义应用程序属性:(我

定义自定义logback.xml!]for sleuth 2.0 +

logging: pattern: level: "%5p [${spring.zipkin.service.name:${spring.application.name:-}},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}] [%X{ddd:-},%X{bp:-},%X{bpids:-}] [%X{op:-},%X{chunk:-},%X{i:-}]"

用于侦探3.0 +

logging: pattern: level: "%5p [${spring.zipkin.service.name:${spring.application.name:}},%X{traceId:-},%X{spanId:-}] [%X{ddd:-},%X{bp:-},%X{bpids:-}] [%X{op:-},%X{chunk:-},%X{i:-}]"

spring-boot logback spring-cloud-sleuth
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.