当前位置: 首页 > 工具软件 > TLog > 使用案例 >

【开源项目】日志框架TLog介绍及实现原理

颜熙云
2023-12-01

日志框架TLog介绍及实现原理

TLog简介

TLog提供了一种最简单的方式来解决日志追踪问题,它不收集日志,也不需要另外的存储空间,它只是自动的对你的日志进行打标签,自动生成TraceId贯穿你微服务的一整条链路。并且提供上下游节点信息。适合中小型企业以及想快速解决日志追踪问题的公司项目使用。

支持dubbo,dubbox,spring cloud三大RPC框架。

TLog应用

  1. 添加依赖
        <dependency>
            <groupId>com.yomahub</groupId>
            <artifactId>tlog-all-spring-boot-starter</artifactId>
            <version>1.5.0</version>
        </dependency>
  1. 在方法上添加注解TLogAspect
@TLogAspect({"id"})
public void demo1(String id,String name){
  log.info("这是第一条日志");
  log.info("这是第二条日志");
  log.info("这是第三条日志");
  new Thread(() -> log.info("这是异步日志")).start();
}
  1. 修改logback中日志中的ch.qos.logback.classic.encoder.PatternLayoutEncoder,改成com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder
  2. 效果
2020-02-08 20:22:33.945 [main] INFO  Demo - <0.2><7205781616706048>[NO1234] 这是第一条日志
2020-02-08 20:22:33.945 [main] INFO  Demo - <0.2><7205781616706048>[NO1234] 这是第二条日志
2020-02-08 20:22:33.945 [main] INFO  Demo - <0.2><7205781616706048>[NO1234] 这是第三条日志
2020-02-08 20:22:33.948 [Thread-3] INFO  Demo - <0.2><7205781616706048>[NO1234] 这是异步日志

TLog实现原理

  1. 系统启动。由于引入pom,tlog-all-spring-boot-starter,会加载对应的spring.factories。加载TLogWebAutoConfigurationTLogAspectAutoConfiguration到Spring容器中。TLogWebAutoConfiguration该类会引入TLogWebConfigTLogWebConfig会加入TLogWebInterceptorTLogAspectAutoConfiguration会引入切面类AspectLogAop
  2. web拦截器。访问接口,TLogWebInterceptor会拦截请求,对header中的tlogTraceId,tlogSpanId,preIvkApp,preIvkHost,preIp存储到MDC中,TLogLabelGenerator#generateTLogLabel会根据header生成tlogLabel,存入线程变量中,AspectLogContext.putLogValue(tlogLabel);
  3. aop切面类。AspectLogAop会对带有@TLogAspect注解的方法进行拦截处理,获取指定的标签和指定的converter,修改线程变量LogValue,AspectLogContext.putLogValue(currentLabel + " " + aspLogValue);
  4. 日志处理。AspectLogbackLayout继承了PatternLayout,对defaultConverterMap重新设置了mmsgmessage的转化器,AspectLogbackConverterAspectLogbackConverter#convert主要是把tlogLabel拼接在原来的日志信息中。

项目地址

  • https://gitee.com/dromara/TLog
 类似资料: