Logback集成skwalking的traceId
本文主要讲述在工程的logback文件中集成skywalking的traceId,以便在日志中打印对应的traceId
文章目录
- Logback集成skwalking的traceId
- 前言
- 一、如何集成TraceID
- 二、使用步骤
- 1.引入库
- 2.修改logback文件
- 3.移动agent插件
- 4.观察结果
- 总结
前言
skywalking是一个非常优秀的国产APM系统,主要开发人来自华为吴晟团队,2019年入住Apache,成为*项目,支持java、.net、NodeJS等探针,数据存储支持H2、ElasticSearch,采用字节码增强技术代码无侵入,粒度相对较粗,性能优越,且支持云原生,目前增长势头强劲,社区活跃,无语言障碍。
一、如何集成TraceID
首先在maven引入 插件,该插件目前由skywalking提供。之后再logback中添加tid到pattern中。最后将agent插件中路径activations/-activation-8.7.移动到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="">
<file>/apps/logs/app.log</file>
<rollingPolicy class="">
<fileNamePattern>/apps/logs/app-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<MaxHistory>10</MaxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="">
<maxFileSize>200MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder class="">
<layout class=".">
<!-- 日志格式中添加 %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/-activation-8.7.移动到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源码进行分析(二)