• sleuth 放置X-B3-TraceId


    服务之间需要追踪是哪个请求,可以使用sleuth

    依赖

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

    logback.xml 配置

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration debug="false">
        <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
        <property name="LOG_HOME" value="./jpush-product/logs"/>
    
        <!-- 彩色日志 -->
        <!-- 彩色日志依赖的渲染类 -->
        <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
        <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
        <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
        <!-- 彩色日志格式 -->
        <property name="CONSOLE_LOG_PATTERN" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID:- }){magenta} %clr(%X{X-B3-TraceId:-}) %clr(---){faint} %clr([%15.15t]){faint} %clr(%logger){cyan} %clr(-){faint} %m%n%wEx"/>
    
        <!-- 控制台输出 -->
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <!--格式化输出,%d:日期;%thread:线程名;%-5level:级别,从左显示5个字符宽度;%msg:日志消息;%n:换行符-->
                <!--            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>-->
                <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
                <!-- 设置字符集 -->
                <charset>UTF-8</charset>
            </encoder>
        </appender>
    
    
    
    
        <!-- 系统INFO日志 -->
        <appender name="INFO_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${LOG_HOME}/info.log</file>
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>INFO</level><!-- 打印INFO及以上级别(INFO,WARN,ERROR) -->
            </filter>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!--日志文件输出的文件名-->
                <fileNamePattern>${LOG_HOME}/info.log.%d{yyyy-MM-dd}.log</fileNamePattern>
                <!--日志文件保留天数-->
                <maxHistory>10</maxHistory>
            </rollingPolicy>
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <!--格式化输出,%d:日期;%thread:线程名;%-5level:级别,从左显示5个字符宽度;%msg:日志消息;%n:换行符-->
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %X{X-B3-TraceId:-} - %X{X-B3-SpanId:-} [%thread] %-5level %logger{50} - %msg%n</pattern>
            </encoder>
        </appender>
    
    
    
        <logger name="com.netflix.discovery.shared.resolver.aws.ConfigClusterResolver" level="DEBUG"/>
    
        <!-- 日志模块输出 -->
        <root level="INFO">
            <appender-ref ref="STDOUT"/>
            <appender-ref ref="INFO_LOG" />
        </root>
    
    </configuration> 

    原理

    Slf4jScopeDecorator 设置线程上下文

    feign 调度时会将threadlocal 信息填充到header中

  • 相关阅读:
    php分页类
    jquery Deferred对象
    sql 常见面试题
    C# socket编程第二篇
    Sqlserver本地服务启动不了,提示请求失败或服务未及时响应
    Sqlserver函数之log,power,len
    C#除法
    C# socket编程第一篇
    android菜鸟进修之路一layout里添加xml文件没有在R.java里生成ID
    form提交时应注意“&”符号
  • 原文地址:https://www.cnblogs.com/dongma/p/15119594.html
Copyright © 2020-2023  润新知