Skywalking log4j、log4j2、logback tid注入方法
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注入方法相关推荐
- 常见日志框架介绍和对比(log4j,logback,log4j2)
文章目录 1. 什么是slf4j? 2. log4j简介和配置 2.1 log4j介绍 2.2 log4j三大组件 2.3 log4j pom依赖引入 2.4 配置log4j 3. logback简介 ...
- 带你理清 Java 混乱的日志体系 - log4j、logback、log4j2、jcl、SLFJ 究竟是啥关系?
1.JAVA混乱的日志体系 换乱的java日志体系 case: SLF4J-JCL LOG4J-CORE LOGBACK SLF4J-SIMPLE JCL-OVER-SLF4J LOGBACK-COR ...
- 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 ...
- spring boot log4j2与三方依赖库log4j冲突无法初始化问题解决方法
spring boot log4j2与三方依赖库log4j冲突无法初始化问题解决方法 参考文章: (1)spring boot log4j2与三方依赖库log4j冲突无法初始化问题解决方法 (2)ht ...
- logback log4j log4j2 性能实测
日志已经成为系统开发中不可或缺的一部分. 但是针对logback, log4j和log4j2. 究竟改如何选择? 到底性能如何? 今天我们做一个实际的测评. 相信看完这篇文章, 对这三个日志框架会有很 ...
- 通过logback-spring.xml配置,概述log4j与logback之间的使用
logback-spring.xml配置:<?xml version="1.0" encoding="UTF-8"?> <!-- scan:当 ...
- 一文搞定:SpringBoot、SLF4j、Log4j、Logback、Netty之间混乱关系(史上最全)
文章很长,建议收藏起来慢慢读!疯狂创客圈总目录 语雀版 | 总目录 码云版| 总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :<尼恩Java面试宝典>持续更新+ 史上最全 + 面 ...
- error 系统错误 错误码10007_为什么阿里巴巴禁止工程师直接使用日志系统( Log4j 、Logback )中的 API...
(给ImportNew加星标,提高Java技能) 转自:Hollis 作为Java程序员,我想很多人都知道日志对于一个程序的重要性,尤其是Web应用.很多时候,日志可能是我们了解应用程序如何执行的唯一 ...
- Log4j、Logback的使用以及日志门面模式(外观模式)
常用日志框架 j.u.l: j.u.l是java.util.logging包的简称,是JDK在1.4版本中引入的Java原生日志框架.Java Logging API提供了七个日志级别用来控制输出 ...
最新文章
- centos把mysql移到数据盘_Centos转移Mysql的数据位置
- 【深度学习】Batch Normalization(BN)超详细解析
- 数列分块入门(套题)(loj6277,loj6278,loj6279,loj6280,loj6281,loj6282,loj6283,loj6284,loj6285)
- 如果太阳系毁灭,这种神秘粒子就是真凶!
- 维持硒测试自动化的完美方法
- java implements interface_java接口(interface)与现实(implements)
- 电源与地之间的电容作用
- 身份证上传识别测试点
- 图片色值提取工具-Color Hunter
- 2022开源社区app源码多端圈子社区论坛系统
- 【FI】财务预制凭证界面隐藏过账按钮
- 有哪些不错的家装风格?极家整装怎么样
- 服务器安装找不到lsi驱动,IBM 机架式服务器RAID卡驱动问题
- N维数组( ndarray)
- 2020-04 前端技术汇总
- C语言编码转换----负数的二进制表示方法
- 在阿里(02):阿里入职记
- EDIUS 9带你剪辑萌萌的《疯狂动物城》
- 仿照jetty的nio原理写了个例子
- 小孢子的神奇之旅-如何阅读MindSpore报错信息(1)
热门文章
- 基于JMP的分类资料组间比较的卡方检验
- 【环境问题】Anaconda-Navigator 更新后无法打开,运行出现UnicodeDecodeError的解决方案
- 计算机 cf比赛,CF端游PL职业联赛春季赛比赛模式规则介绍
- 走入SVG-姜威-专题视频课程
- 小鸟云管理终端(VNC连接)常见问题
- Poj 2010-Moo University - Financial Aid
- 港科夜闻|香港科大张利民教授荣获2023年度美国土木工程师学会派克奖(Ralph B. Peck Award)...
- Spsice仿真实验 例B-1
- 转专业计算机的面试自我介绍,转专业面试自我介绍
- 努努小说通用爬取——多线程