Skywalking tid注入方法

log4j2

pom中引入以下依赖

<dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-log4j-2.x</artifactId><version>6.4.0</version>
</dependency>

springboot log4j2 日志依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

log4j2.xml加入以下配置

 <Properties><Property name="log.layout">%d{ISO8601} | %traceId | %-5.5p | %X{logtype} | %t | %X{codeline} | %l | %X{dealid} | %X{errorno} | %m%n</Property></Properties><Appenders><Appender type="Console" name="STDOUT"><Layout type="PatternLayout" pattern="${log.layout}"/></Appender></Appenders>

log4j

应用的日志框架中引入以下依赖

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

springboot 1.2.6.RELEASE 版本以上的版本log4j日志依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency>

springboot 1.2.6.RELEASE 版本以下的版本log4j日志依赖

   <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j</artifactId></dependency>

替换log4j.properties中的配置

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} | %c | %n | %n%m%n
log4j.appender.stdout.layout=org.apache.skywalking.apm.toolkit.log.log4j.v1.x.TraceIdPatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} | %T | %c | %n | %n%m%n

logback

pom中引入以下依赖

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

springboot logback 日志依赖,使用的是spring-boot-starter-logging

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

替换logback.xml中配置

<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>%d{ISO8601} | %thread | %-5level | %msg%n</pattern>
</encoder>
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"><layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout"><pattern>%d{ISO8601} | %tid | %thread | %-5level | %msg%n</pattern></layout>
</encoder>

日志链路测试代码

@Configuration
public class TestLog implements CommandLineRunner {private static final Logger logger = LoggerFactory.getLogger(TestLog.class);@Overridepublic void run(String... strings) throws Exception {logtest();}public void logtest(){ScheduledExecutorService ses = Executors.newSingleThreadScheduledExecutor();ses.scheduleAtFixedRate(new Runnable() {@Overridepublic void run() {try {start();}catch ( Exception e ){logger.error("log TID is error{}",e);}}},1, 1, TimeUnit.SECONDS);}@Trace(operationName = "/log/traceId")public String getTraceId(){try {return TraceContext.traceId();} catch (Exception e) {logger.error("skywalking agent is not mount");}return "TID: N/A" ;}@Trace(operationName = "/log/date")public String getNowDate(String str){logger.info("{} get date, traceId: {}",str,getTraceId());return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());}@Trace(operationName = "/log/start")public void start(){logger.info("start log now is {}",getNowDate("START"));running();}@Trace(operationName = "/log/running")public void running(){logger.info("running log now is {}",getNowDate("RUNNING"));waiting();}@Trace(operationName = "/log/waiting")public void waiting(){logger.info("waiting log now is {}",getNowDate("WAITING"));ending();}@Trace(operationName = "/log/ending")public void ending(){logger.info("ending log now is {}",getNowDate("ENDING"));}
}

效果图

2020-10-30T08:59:26,104 | INFO  |  | main  | TID: N/A |  | org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:179) |  |  | Initializing ProtocolHandler ["http-nio-8702"]
2020-10-30T08:59:26,104 | INFO  |  | main  | TID: N/A |  | org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:179) |  |  | Starting ProtocolHandler ["http-nio-8702"]
2020-10-30T08:59:26,104 | INFO  |  | main  | TID: N/A |  | org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:179) |  |  | Using a shared selector for servlet write/read
2020-10-30T08:59:26,164 | INFO  |  | main  | TID: N/A |  | org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:201) |  |  | Tomcat started on port(s): 8702 (http)
2020-10-30T08:59:26,174 | INFO  |  | main  | TID: N/A |  | org.springframework.boot.StartupInfoLogger.logStarted(StartupInfoLogger.java:57) |  |  | Started Log4j2ApplicationMain in 6.29 seconds (JVM running for 12.174)
2020-10-30T08:59:27,274 | INFO  |  | pool-6-thread-1  | TID: 214.69.16040195672290001 |  | com.newland.core.server.TestLog.getNowDate$original$zRJZN24M(TestLog.java:55) |  |  | START get date, traceId: 214.69.16040195672290001
2020-10-30T08:59:27,289 | INFO  |  | pool-6-thread-1  | TID: 214.69.16040195672290001 |  | com.newland.core.server.TestLog.start$original$zRJZN24M(TestLog.java:61) |  |  | start log now is 2020-10-30 08:59:27
2020-10-30T08:59:27,289 | INFO  |  | pool-6-thread-1  | TID: 214.69.16040195672290001 |  | com.newland.core.server.TestLog.getNowDate$original$zRJZN24M(TestLog.java:55) |  |  | RUNNING get date, traceId: 214.69.16040195672290001
2020-10-30T08:59:27,289 | INFO  |  | pool-6-thread-1  | TID: 214.69.16040195672290001 |  | com.newland.core.server.TestLog.running$original$zRJZN24M(TestLog.java:67) |  |  | running log now is 2020-10-30 08:59:27
2020-10-30T08:59:27,289 | INFO  |  | pool-6-thread-1  | TID: 214.69.16040195672290001 |  | com.newland.core.server.TestLog.getNowDate$original$zRJZN24M(TestLog.java:55) |  |  | WAITING get date, traceId: 214.69.16040195672290001
2020-10-30T08:59:27,289 | INFO  |  | pool-6-thread-1  | TID: 214.69.16040195672290001 |  | com.newland.core.server.TestLog.waiting$original$zRJZN24M(TestLog.java:73) |  |  | waiting log now is 2020-10-30 08:59:27
2020-10-30T08:59:27,289 | INFO  |  | pool-6-thread-1  | TID: 214.69.16040195672290001 |  | com.newland.core.server.TestLog.getNowDate$original$zRJZN24M(TestLog.java:55) |  |  | ENDING get date, traceId: 214.69.16040195672290001
2020-10-30T08:59:27,294 | INFO  |  | pool-6-thread-1  | TID: 214.69.16040195672290001 |  | com.newland.core.server.TestLog.ending$original$zRJZN24M(TestLog.java:79) |  |  | ending log now is 2020-10-30 08:59:27

Skywalking log4j、log4j2、logback tid注入方法相关推荐

  1. 常见日志框架介绍和对比(log4j,logback,log4j2)

    文章目录 1. 什么是slf4j? 2. log4j简介和配置 2.1 log4j介绍 2.2 log4j三大组件 2.3 log4j pom依赖引入 2.4 配置log4j 3. logback简介 ...

  2. 带你理清 Java 混乱的日志体系 - log4j、logback、log4j2、jcl、SLFJ 究竟是啥关系?

    1.JAVA混乱的日志体系 换乱的java日志体系 case: SLF4J-JCL LOG4J-CORE LOGBACK SLF4J-SIMPLE JCL-OVER-SLF4J LOGBACK-COR ...

  3. java常用日志框架日志门面及实现 SLF4J 、Jboss-logging 、JCL、Log4j、Logback、Log4j2、JUL,springboot集成 log4j、log4j2

    java常用日志框架日志门面SLF4J .Jboss-logging .JCL.Log4j及实现 Logback.Log4j2.JUL,springboot集成 log4j.log4j2 .logba ...

  4. spring boot log4j2与三方依赖库log4j冲突无法初始化问题解决方法

    spring boot log4j2与三方依赖库log4j冲突无法初始化问题解决方法 参考文章: (1)spring boot log4j2与三方依赖库log4j冲突无法初始化问题解决方法 (2)ht ...

  5. logback log4j log4j2 性能实测

    日志已经成为系统开发中不可或缺的一部分. 但是针对logback, log4j和log4j2. 究竟改如何选择? 到底性能如何? 今天我们做一个实际的测评. 相信看完这篇文章, 对这三个日志框架会有很 ...

  6. 通过logback-spring.xml配置,概述log4j与logback之间的使用

    logback-spring.xml配置:<?xml version="1.0" encoding="UTF-8"?> <!-- scan:当 ...

  7. 一文搞定:SpringBoot、SLF4j、Log4j、Logback、Netty之间混乱关系(史上最全)

    文章很长,建议收藏起来慢慢读!疯狂创客圈总目录 语雀版 | 总目录 码云版| 总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :<尼恩Java面试宝典>持续更新+ 史上最全 + 面 ...

  8. error 系统错误 错误码10007_为什么阿里巴巴禁止工程师直接使用日志系统( Log4j 、Logback )中的 API...

    (给ImportNew加星标,提高Java技能) 转自:Hollis 作为Java程序员,我想很多人都知道日志对于一个程序的重要性,尤其是Web应用.很多时候,日志可能是我们了解应用程序如何执行的唯一 ...

  9. Log4j、Logback的使用以及日志门面模式(外观模式)

    常用日志框架 j.u.l:  j.u.l是java.util.logging包的简称,是JDK在1.4版本中引入的Java原生日志框架.Java Logging API提供了七个日志级别用来控制输出 ...

最新文章

  1. centos把mysql移到数据盘_Centos转移Mysql的数据位置
  2. 【深度学习】Batch Normalization(BN)超详细解析
  3. 数列分块入门(套题)(loj6277,loj6278,loj6279,loj6280,loj6281,loj6282,loj6283,loj6284,loj6285)
  4. 如果太阳系毁灭,这种神秘粒子就是真凶!
  5. 维持硒测试自动化的完美方法
  6. java implements interface_java接口(interface)与现实(implements)
  7. 电源与地之间的电容作用
  8. 身份证上传识别测试点
  9. 图片色值提取工具-Color Hunter
  10. 2022开源社区app源码多端圈子社区论坛系统
  11. 【FI】财务预制凭证界面隐藏过账按钮
  12. 有哪些不错的家装风格?极家整装怎么样
  13. 服务器安装找不到lsi驱动,IBM 机架式服务器RAID卡驱动问题
  14. N维数组( ndarray)
  15. 2020-04 前端技术汇总
  16. C语言编码转换----负数的二进制表示方法
  17. 在阿里(02):阿里入职记
  18. EDIUS 9带你剪辑萌萌的《疯狂动物城》
  19. 仿照jetty的nio原理写了个例子
  20. 小孢子的神奇之旅-如何阅读MindSpore报错信息(1)

热门文章

  1. 基于JMP的分类资料组间比较的卡方检验
  2. 【环境问题】Anaconda-Navigator 更新后无法打开,运行出现UnicodeDecodeError的解决方案
  3. 计算机 cf比赛,CF端游PL职业联赛春季赛比赛模式规则介绍
  4. 走入SVG-姜威-专题视频课程
  5. 小鸟云管理终端(VNC连接)常见问题
  6. Poj 2010-Moo University - Financial Aid
  7. 港科夜闻|香港科大张利民教授荣获2023年度美国土木工程师学会派克奖(Ralph B. Peck Award)...
  8. Spsice仿真实验 例B-1
  9. 转专业计算机的面试自我介绍,转专业面试自我介绍
  10. 努努小说通用爬取——多线程