SkyWalking 源码解析 —— traceId 集成到日志组件

摘要: 原创出处 http://www.iocoder.cn/SkyWalking/trace-id-integrate-into-logs/ 「芋道源码」欢迎转载,保留摘要,谢谢!

本文主要基于 SkyWalking 3.2.6 正式版


1. 概述

本文主要分享 traceId 集成到日志组件,例如 log4j 、log4j2 、logback 等等。

我们首先看看集成的使用例子,再看看集成的实现代码。涉及代码如下:

本文以 logback 1.x 为例子。

2. 使用例子

1、无需引入相应的工具包,只需启动参数带上 -javaagent:/Users/yunai/Java/skywalking/packages/skywalking-agent/skywalking-agent.jar

2、在 logback.xml 配置 %tid 占位符:

3、使用 logger.info(...) ,会打印日志如下:

注意,traceId 打印到每条日志里,最终需要经过例如 ELK ,收集到日志中心。

3. 实现代码

3.1 TraceIdPatternLogbackLayout

org.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout ,实现 ch.qos.logback.classic.PatternLayout 类,实现支持 %tid 的占位符。代码如下:

3.2 LogbackPatternConverterActivation

org.skywalking.apm.toolkit.activation.log.logback.v1.x.LogbackPatternConverterActivation ,实现 ClassInstanceMethodsEnhancePluginDefine 抽象类,定义了方法切面,代码如下:


org.skywalking.apm.toolkit.activation.log.logback.v1.x.PrintTraceIdInterceptor ,实现 InstanceMethodsAroundInterceptor 接口,LogbackPatternConverterActivation 的拦截器。代码如下:

  • #afterMethod(...) 方法,调用 ContextManager#getGlobalTraceId() 方法,使用全局链路追踪编号,而不是原有结果。
赞(0) 打赏

如未加特殊说明,此网站文章均为原创,转载必须注明出处。Java 技术驿站 » SkyWalking 源码解析 —— traceId 集成到日志组件
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

Java 技术驿站 | 致力打造 Java 精品博客

联系作者优质文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏