文章40 | 阅读 30633 | 点赞0
本文主要分享 traceId 集成到日志组件,例如 log4j 、log4j2 、logback 等等。
我们首先看看集成的使用例子,再看看集成的实现代码。涉及代码如下:
本文以 logback 1.x 为例子。
1、无需引入相应的工具包,只需启动参数带上 -javaagent:/Users/yunai/Java/skywalking/packages/skywalking-agent/skywalking-agent.jar
。
2、在 logback.xml
配置 %tid
占位符:
3、使用 logger.info(...)
,会打印日志如下:
注意,traceId 打印到每条日志里,最终需要经过例如 ELK ,收集到日志中心。
org.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout
,实现 ch.qos.logback.classic.PatternLayout
类,实现支持 %tid
的占位符。代码如下:
tid
的转换器为 org.skywalking.apm.toolkit.log.logback.v1.x.LogbackPatternConverter
类。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()
方法,使用全局链路追踪编号,而不是原有结果。版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_42073629/article/details/119703784
内容来源于网络,如有侵权,请联系作者删除!