Logback 集成 Skywalking Trace ID 并结合skywalking agent源码进行分析

Logback集成skwalking的traceId

本文主要讲述在工程的logback文件中集成skywalking的traceId,以便在日志中打印对应的traceId



前言

skywalking是一个非常优秀的国产APM系统,主要开发人来自华为吴晟团队,2019年入住Apache,成为顶级项目,支持java、.net、NodeJS等探针,数据存储支持H2、ElasticSearch,采用字节码增强技术代码无侵入,粒度相对较粗,性能优越,且支持云原生,目前增长势头强劲,社区活跃,无语言障碍。


一、如何集成TraceID

首先在maven引入apm-toolkit-logback-1.x 插件,该插件目前由skywalking提供。之后再logback中添加tid到pattern中。最后将agent插件中路径activations/apm-toolkit-logback-1.x-activation-8.7.0.jar移动到plugins中,然后再次启动

二、使用步骤

1.引入库

由于本人是基于8.7.0进行开发的故版本号选择8.7的版本

 <dependency>
        <groupId>org.apache.skywalking</groupId>
        <artifactId>apm-toolkit-logback-1.x</artifactId>
        <version>8.7.0</version>
 </dependency>

2.修改logback文件

(示例):

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/apps/logs/app.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>/apps/logs/app-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
            <MaxHistory>10</MaxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>200MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
                <!-- 日志格式中添加 %tid 即可输出 trace id -->
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %tid %logger{50} - %msg%n</pattern>
<!--                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %tid %t %logger{50}: %msg%n</pattern>-->
            </layout>
        </encoder>
    </appender>

3.移动agent插件

:将agent路径activations/apm-toolkit-logback-1.x-activation-8.7.0.jar移动到plugins中。

4.观察结果

:结果如下

2022-01-17 13:50:50.250 [http-nio-9013-exec-1] INFO  TID:1baac609bcd549f9bde79acba8c1d34a.33.16423986502360001 o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
2022-01-17 13:50:50.250 [http-nio-9013-exec-1] INFO  TID:1baac609bcd549f9bde79acba8c1d34a.33.16423986502360001 org.springframework.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
2022-01-17 13:50:50.263 [http-nio-9013-exec-1] INFO  TID:1baac609bcd549f9bde79acba8c1d34a.33.16423986502360001 org.springframework.web.servlet.DispatcherServlet - Complete

可以看出打印日志中包含了TID

总结

通过先引入skywalking的jar包,然后在 Logback 配置文件中的 pattern 中添加 %tid,就可以在日志行中输出调用链ID。
建议:后续可以通过修改logstash 配置解析文件就可以在es中存储包含traceid的日志记录,之后可通过skywalking连接日志存储ES获取数据,可完成对日志进行查询和链路的关联。

Logback 集成 Skywalking Trace ID 并结合skywalking agent源码进行分析(二)

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值