全链路追踪TLog

TLog是一个轻量级的微服务日志追踪系统,支持多种接入方式,包括javaagent、字节码注入和配置文件方式。它能与log4j、log4j2、logback等日志框架无缝适配,并适用于dubbo、dubbox、springcloud等RPC框架。TLog提供自定义模板配置,支持异步线程追踪,且性能损耗极低。
摘要由CSDN通过智能技术生成

分布式追踪系统

SkyWalking,Pinpoint,基于OpenTracing规范,而且通常都是无侵入性的,并且有相对友好的管理界面来进行链路Span的查询。

TLog特性

  • 通过对日志打标签完成轻量级微服务日志追踪
  • 提供三种接入方式:javaagent完全无侵入接入,字节码一行代码接入,基于配置文件的接入
  • 对业务代码无侵入式设计,使用简单,10分钟即可接入
  • 支持常见的log4j,log4j2,logback三大日志框架,并提供自动检测,完成适配
  • 支持dubbo,dubbox,springcloud三大RPC框架
  • 支持Spring Cloud Gateway和Soul网关
  • 适配HttpClient和Okhttp的http调用标签传递
  • 支持三种任务框架,JDK的TimerTask,Quartz,XXL-JOB
  • 支持日志标签的自定义模板的配置,提供多个系统级埋点标签的选择
  • 支持异步线程的追踪,包括线程池,多级异步线程等场景
  • 几乎无性能损耗,快速稳定,经过压测,损耗在0.01%
    在这里插入图片描述
  • 自启动
    由main函数作为项目的启动入口
  • 外置容器启动
    指项目部署在类似tomcat容器中的,tomcat作为外容器,项目部署在webapp目录下的
    javaagent本质也是字节码注入方式,只不过是完全无侵入项目的方式。
    TLog接入方式对于特性的支持:
    在这里插入图片描述

安装TLog

全量依赖
TLog对springboot和spring native提供了两种不同依赖,此种方式只需依赖一个包,必须的包会传递依赖进来
(1)springboot依赖

<dependency>
  <groupId>com.yomahub</groupId>
  <artifactId>tlog-all-spring-boot-starter</artifactId>
  <version>1.3.1</version>
</dependency>

(2)spring native依赖

<dependency>
  <groupId>com.yomahub</groupId>
  <artifactId>tlog-all</artifactId>
  <version>1.3.1</version>
</dependency>

按需依赖

<dependency>
  <groupId>com.yomahub</groupId>
  <artifactId>tlog-XXX-spring-boot-starter</artifactId>
  <version>1.3.1</version>
</dependency>

在这里插入图片描述javaagent接入方式
(1)在Java启动参数中加入:

-javaagent:/your_path/tlog-agent.jar

(2)下载地址:

https://gitee.com/dromara/TLog/releases/v1.3.1

字节码注入方式
这种方式适合springboot项目,需要项目依赖tlog-all-spring-boot-starter包, tlog提供springboot的自动装配功能。
只需要在你的启动类中加入一行代码,即可以自动进行探测你项目所使用的Log框架,并进行增强。
以下方法适用于log4j,logback,原则上log4j2连这一行都不需要,因为log4j2会插件架构设计,会自动读取TLog项目中log4j2的适配插件:

@SpringBootApplication
public class Runner {
   static {
   AspectLogEnhance.enhance();}//进行日志增强,自动判断日志框架public static void main(String[] args) {
   
        SpringApplication.run(Runner.class, args);
    }
}

因为这里是用javassist实现,需要在jvm加载对应日志框架的类之前,进行字节码增强。所以这里用static块。但是此方法要注意以下几点:

  • 对于Springboot应用而言,启动类中不能加入log定义,否则会不生效
  • 如果你的项目是非springboot,或者你是用tomcat/jboss/jetty等外置容器启动的(springboot的spring-boot-starter-web属于内置容器),则此方法无法使用,只能手动修改log配置文件
  • 对于使用log4j2日志框架的应用来说,此方法如果出现不生效的情况,请把log4j2配置文件的pattern中的m/msg/message改成tm/tmsg/tmessage

示例:

2021-06-21 13:57:10.310  INFO 8988 --- [nio-8101-exec-1] c.fofund.boot.redis.cache.RedisService   : <0><8734574520119040> 缓存key:[fofund-ipmc:login_token:null]
2021-06-21 13:57:10.367  INFO 8988 --- [nio-8101-exec-1] com.fofund.ipmc.aop.ControllerAspect     : <0><8734574520119040> login accountCode:[null],token:[null]
2021-06-21 13:57:10.367  INFO 8988 --- [nio-8101-exec-1] com.fofund.ipmc.aop.ControllerAspect     : <0><8734574520119040> ----------------request start----------------
2021-06-21 13:57:10.368  INFO 8988 --- [nio-8101-exec-1] com.fofund.ipmc.aop.ControllerAspect     : <0><8734574520119040> URL:http://localhost:8101/ipmc/account/add
2021-06-21 13:57:10.368  INFO 8988 --- [nio-8101-exec-1] com.fofund.ipmc.aop.ControllerAspect     : <0><8734574520119040> HTTP_METHOD :POST
2021-06-21 13:57:10.368  INFO 8988 --- [nio-8101-exec-1] com.fofund.ipmc.aop.ControllerAspect     : <0><8734574520119040> IP:0:0:0:0:0:0:0:1
2021-06-21 13:57:10.371  INFO 8988 --- [nio-8101-exec-1] com.fofund.ipmc.aop.ControllerAspect     : <0><8734574520119040> CLASS_METHOD:com.fofund.ipmc.controller.AccountController.addAccount
2021-06-21 13:57:10.372  INFO 8988 --- [nio-8101-exec-1] com.fofund.ipmc.aop.ControllerAspect     : <0><8734574520119040> ARGS:[AccountRequest(accountId=null, loginName=zhangwenlong99, password=LF8JQW1FywP+cuY+YEeMEBCOib7RcYYvMTLzbzCsVeSg4aj+pCSimmZSCeKX6bow5wOnsPOw64Phs30Pow38mIJsJmSc/J7Apv23htr3/JUiO6w9EpoLIGluU01NvplG/cpzIufxZNtMxkhBOzvCX1tV68NKg0LkYqa7Flh6nv0=, accountName=zhangwenlong05, employeeName=zhangwenlong05, phone=13003252799, email=zhangsan@fofund.com.cn, loginSwitch=1, oaFlag=null, roleList=[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值