添加URL
相关文章推荐

要实现精确的链路追踪,则需要针对每一次请求设置一个唯一编码,Trace ID 就是用于链路追踪的标识。本文将介绍 Skywalking 在 SpringBoot 项目中集成 Trace ID 以及配置 logback 实现日志异步上传到 Skywalking 的功能。

Spring Cloud Alibaba 2.X 简易集成 Skywalking 实现微服务链路追踪

2 核心 Maven 依赖

./cloud-alibaba-gateway-filter/pom.xml
./cloud-alibaba-server-provider/pom.xml
./cloud-alibaba-server-consumer/pom.xml
./cloud-alibaba-server-consumer-feign/pom.xml
        <!-- skywalking toolkit -->
        <dependency>
            <groupId>org.apache.skywalking</groupId>
            <artifactId>apm-toolkit-trace</artifactId>
            <version>${skywalking.toolkit.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.skywalking</groupId>
            <artifactId>apm-toolkit-logback-1.x</artifactId>
            <version>${skywalking.toolkit.version}</version>
        </dependency>

其中 ${skywalking.toolkit.version} 的版本为 8.7.0

3 Logback 配置

./cloud-alibaba-gateway-filter/src/main/resources/logback.xml
./cloud-alibaba-server-provider/src/main/resources/logback.xml
./cloud-alibaba-server-consumer/src/main/resources/logback.xml
./cloud-alibaba-server-consumer-feign/src/main/resources/logback.xml
    <property name="FILE_LOG_PATTERN"
              value="%d{yyyy-MM-dd HH:mm:ss} | %-5level | %thread | %tid | %logger{50} %L\ | %msg%n" />

其中 tid 即为 Trace ID

    <appender name="grpc-log" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender" >
        <!-- 对日志进行格式化 -->
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
                <pattern>${FILE_LOG_PATTERN}</pattern>
            </layout>
        </encoder>
    </appender>

将日志上传至 Skywalking 的配置

4 日志使用效果

控制台日志

2021-11-23 14:44:56 | INFO  | http-nio-8604-exec-8 | TID:9db5a370aa5847569b036d44ce972999.707.16376498966050097 | c.l.d.s.a.s.c.f.controller.NacosConsumerController 26| /hello request data: HelloParam(name=gateway-feign-德玛西亚)
2021-11-23 14:44:56 | INFO  | http-nio-8604-exec-8 | TID:9db5a370aa5847569b036d44ce972999.707.16376498966050097 | c.l.d.s.a.s.c.f.controller.NacosConsumerController 28| response: Hello,gateway-feign-德玛西亚

根据 tid 在 Skywalking 搜索日志

也可以从链路追踪界面点击查看日志

5 推荐参考资料

SpringBoot项目traceId生成/日志打印

微服务链路追踪组件 Skywalking 实战

SpringBoot集成Skywalking和logback.xml

6 Github 源码

Gtihub 源码地址 : https://github.com/Flying9001/springBootDemo

个人公众号:404Code,分享半个互联网人的技术与思考,感兴趣的可以关注.
404Code