TLog轻量级分布式日志标记追踪神器

news2024/9/28 23:34:54

文章目录

  • TLog简介
  • 项目特性
  • 安装TLog
    • springboot依赖
    • spring native依赖
  • 日志框架适配方式(举例Log4j框架适配器)
  • 任务框架支持(举例XXL-JOB框架)
  • TLog架构图

TLog简介

  1. TLog通过对日志打标签完成企业级微服务的日志追踪。它不收集日志,使用简单, 产生全局唯一的追踪码。除了追踪码以外,TLog还支持SpanId和上下游服务信息 标签的追加。
  2. 为用户使用方便而设计,提供完全零侵入式接入方式,自动探测项目中使用的RPC框架和日志框架, 进行字节码的注入完成系统级日志标签的追加。
  3. TLog适配了市面上主流的RPC框架:dubbodubboxspring cloud的open feign
  4. TLog提供Javaagent,字节码注入,日志框架适配三种接入模式,无论是哪一种,都保证了无性能损耗。支持在业务异步线程,线程池,日志异步输出这几种场景下追踪不中断。

项目特性

  1. 通过对日志打标签完成轻量级微服务日志追踪
  2. 提供三种接入方式javaagent完全无侵入接入,字节码一行代码接入,基于配置文件的接入
  3. 支持常见的log4jlog4j2logback三大日志框架,并提供自动检测,完成适配
  4. 支持Spring Cloud GatewaySoul网关
  5. 适配HttpClientOkhttp的http调用标签传递
  6. 支持三种任务框架,JDK的TimerTaskQuartzXXL-JOB
  7. 支持日志标签的自定义模板的配置,提供多个系统级埋点标签的选择
  8. 支持异步线程的追踪,包括线程池,多级异步线程等场景
  9. 几乎无性能损耗,快速稳定,经过压测,损耗在0.01%

安装TLog

TLogspring bootspring native提供了2种不同的依赖,此种方式只需依赖一个包,必须的包会传递依赖进来。

springboot依赖

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

spring native依赖

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

日志框架适配方式(举例Log4j框架适配器)

  • 同步日志:只需要把layout的实现类换掉就可以了
<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">  
<log4j:configuration>  
    <appender name="stdout" class="org.apache.log4j.ConsoleAppender">  
        <!--替换成AspectLog4jPatternLayout-->  
        <layout class="com.yomahub.tlog.core.enhance.log4j.AspectLog4jPatternLayout">  
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS} [%p] %m  >> %c:%L%n"/>  
        </layout>  
    </appender>  
    <appender name="fileout" class="org.apache.log4j.DailyRollingFileAppender">  
        <param name="File" value="./logs/test.log"/>  
        <!--替换成AspectLog4jPatternLayout-->  
        <layout class="com.yomahub.tlog.core.enhance.log4j.AspectLog4jPatternLayout">  
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS} [%p] %m  >> %c:%L%n"/>  
        </layout>  
    </appender>  
    <root>  
        <priority value="info" />  
        <appender-ref ref="stdout"/>  
        <appender-ref ref="fileout"/>  
    </root>  
</log4j:configuration>
  • 异步日志:只要把appender的实现类替换掉就行了
<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">  
<log4j:configuration>  
    <appender name="stdout" class="org.apache.log4j.ConsoleAppender">  
        <layout class="org.apache.log4j.PatternLayout">  
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS} [%p] %m  >> %c:%L%n"/>  
        </layout>  
    </appender>  
    <appender name="fileout" class="org.apache.log4j.DailyRollingFileAppender">  
        <param name="File" value="./logs/log4j-dubbo-provider.log"/>  
        <layout class="org.apache.log4j.PatternLayout">  
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS} [%p] %m  >> %c:%L%n"/>  
        </layout>  
    </appender>  
  
    <!--这里替换成AspectLog4jAsyncAppender-->  
    <appender name="asyncFileout" class="com.yomahub.tlog.core.enhance.log4j.async.AspectLog4jAsyncAppender">  
        <appender-ref ref="fileout"/>  
    </appender>  
  
    <root>  
        <priority value="info" />  
        <appender-ref ref="stdout"/>  
        <appender-ref ref="asyncFileout"/>
    </root>  
</log4j:configuration>

任务框架支持(举例XXL-JOB框架)

1.3.0版本开始,TLog对开源框架XXL-JOB作了支持
springboot环境下,无需作任何改动只需引入依赖包即可生效
而在spring native环境下需要额外配置一行

<bean class="com.yomahub.tlog.springboot.lifecircle.TLogXxljobEnhanceInit"/>

TLog架构图

202212011750705.png

开源地址:https://gitee.com/dromara/TLog

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/55655.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Actor 生命周期

一&#xff0c;一览图 二&#xff0c; 大致流程 三&#xff0c;细节 从磁盘加载 已位于关卡中的 Actor 使用此路径&#xff0c;如 LoadMap 发生时、或 AddToWorld&#xff08;从流关卡或子关卡&#xff09;被调用时。 包/关卡中的 Actor 从磁盘中进行加载。 PostLoad - 在序…

支持向量机(SVM)—— 详细推导及案例应用可视化

支持向量机&#xff08;SVM&#xff09; 1. 什么是支持向量机&#xff1f; 在上图中&#xff0c;我们想在二维平面中通过画出一条分界线将黑点与白点分开&#xff0c;很明显&#xff0c;我们认为在上面所画的三条分界线中H3H_3H3​是最好的&#xff0c;因为H1H_1H1​压根就没有…

【行为识别】差影法三维人体姿态行为识别【含Matlab源码 277期】

⛄一、简介 该课题为基于MATLAB差影法的人体姿态识别。需要准备对应的模板图片作为背景图&#xff0c;然后测试图和背景图进行作差&#xff0c;结合形态学知识&#xff0c;提取出人体轮廓&#xff0c;接上最外接矩形&#xff0c;得出矩形长宽&#xff0c;计算长宽比例&#xf…

江江文具店铺运营方案设计

目 录 摘 要 I ABSTRACT II 第一章 项目背景 1 1.1电子商务基本概念 1 1.2电子商务现状及发展趋势 1 1.3文具行业的发展现状 2 第二章 文具行业介绍 4 2.1文具行业的调查与分析 4 2.1.1文具行业电子商务渗透率 4 2.1.2文具行业内企业电子商务销售平台使用状况调查统计 5 2.1.3文…

自研芯片重构云上算力革新,满足用户所有负载的需求!

目前&#xff0c;云计算已深入到整个云基础设施&#xff0c;进入硬件协同创新的“深水区”&#xff0c;芯片创新之路是最底层的创新&#xff0c;是最具颠覆性的&#xff0c;也是改变云计算游戏规则的能力。 而亚马逊云科技硬件创新背后的初衷&#xff1a;为云而生的硬件设计&am…

【计算机毕业设计】71.大学生兼职信息系统源码

一、系统截图&#xff08;需要演示视频可以私聊&#xff09; 摘 要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐…

react源码中的协调与调度

requestEventTime 其实在React执行过程中&#xff0c;会有数不清的任务要去执行&#xff0c;但是他们会有一个优先级的判定&#xff0c;假如两个事件的优先级一样&#xff0c;那么React是怎么去判定他们两谁先执行呢&#xff1f; // packages/react-reconciler/src/ReactFibe…

数字化门店| 运动场馆管理系统| 智慧门店小程序

忙碌了一天或闲暇之余想要放松&#xff0c;不少年轻人都会选择前往运动场馆进行各种运动&#xff0c;如打篮球、踢足球、打羽毛球等&#xff0c;一些城市的某个特定区域内聚集着不同品牌的运动场馆&#xff0c;相互之间竞争激烈。 如今&#xff0c;消费升级下&#xff0c;消费者…

Win10系统修改用户名以及C盘下Users用户名实操手册(实测有效)

当然&#xff0c;前提先说下如无必要&#xff0c;不建议修改C盘user下用户名&#xff0c;毕竟重装系统可能就在那一瞬间。我们要理解里面的原理&#xff0c;逻辑关系就会好操作很多了。再次申明&#xff0c;目前这只是针对Win10的实操&#xff0c;Win11的操作会有一些不同&…

铁矿行业商业智能BI经营分析框架(三)财务能力分析

铁矿行业属于黑色金属矿采选业&#xff0c;商业智能BI对于这个行业的财务能力指标分析框架跟其它行业大体上是一样的。比如从盈利能力、债务风险、营运能力、发展能力、现金流这几个角度去看。 财务分析 - 派可数据商业智能BI可视化分析平台 一、盈利能力 商业智能BI从资产、…

天黑了、让我为你关窗帘吧

今天遇到朋友发来的一个需求&#xff0c;需要做一个窗户上下拉窗帘的小小的交互&#xff0c;于是就有了今天的小DEMO&#xff0c;要实现下图一个效果&#xff0c;需要开窗帘&#xff0c;关窗帘&#xff0c;中途还可以暂停&#xff0c;就这样一个小小的效果&#xff0c;我们来分…

阿里18年架构师,带你分析经典算法应用思路,探究分布式背后原理

你要知道 长期以来,在996的工作压力下&#xff0c;工程师们更重视实践中的技巧&#xff0c;力求快速解决眼前的问题,而鲜有时间关注问题背后的底层原理。 表面看来&#xff0c;这种做法提高了工作效率&#xff0c;但实际上&#xff0c;这样容易形成“头疼医头&#xff0c;脚疼…

【Python】解决CNN中训练权重参数不匹配size mismatch for fc.weight,size mismatch for fc.bias

目录 1.问题描述 2.问题原因 3.问题解决 3.1思路1——忽视最后一层权重 额外说明&#xff1a;假如载入权重不写strictFalse, 直接是model.load_state_dict(pre_weights, strictFalse)&#xff0c;会报错找不到key&#xff1f; 解决办法是&#xff1a;加上strictFalse&…

Ajax学习:解决跨域_JSONP

JSONP&#xff1a;非官方的跨域解决方案,纯粹依靠程序员的聪明才智&#xff0c;只支持get请求 JSONP是怎么工作的&#xff1a;再页面中有一些标签天生具有跨域能力&#xff0c;就像是link,img,iframe,script JSONP就是利用script标签的跨域能力来发送请求 如下所示&#xff1a…

[附源码]计算机毕业设计毕业生就业管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【Docker】Docker常用命令(包含Dockerfile指令)

目录一.Docker常用命令1.帮助命令2.镜像命令3.容器命令4.其他常用命令5.更多更详细命令二.Dockerfile常用指令1.常用指令2.CMD 和 ENTRYPOINT 的区别一.Docker常用命令 1.帮助命令 # docker version //查看docker版本号 # docker info //查看docker的系统信息…

外贸员的日常工作分享

外贸人米贸搜的日常工作流程为你整理如下。希望能帮到你: 外贸业务员的职责 一、业务人员在向国外买家询价前&#xff0c;要了解客户的基本信息&#xff0c;包括是否是终端客户&#xff0c;年采购量&#xff0c;消费区域&#xff0c;产品的用途&#xff0c;规格&#xff0c;质…

(附源码)SSM座位管理系统 毕业设计 250858

基于SSM的座位管理系统 摘 要 21世纪时信息化的时代&#xff0c;几乎任何一个行业都离不开计算机&#xff0c;将计算机运用于学校的各种信息管理也是十分常见的。过去使用手工的管理方式对高校教室座位进行管理&#xff0c;造成了管理繁琐、难以维护等问题&#xff0c;如今使用…

python的opencv使用总结

作为最容易上手之一的语言&#xff0c;python拥有着大量的第三方库&#xff0c;这些第三方库的存在使得很多人可以专注于业务逻辑、数学逻辑而忽略繁琐的代码操作&#xff0c;python的opencv第三方库就是其中之一。 一、第三方库的安装和简单使用 安装 简单的pip安装就可以了…

【雷达波位编排】基于matlab相控阵雷达的波位编排仿真【含Matlab源码 2251期】

⛄一、相控阵雷达最优波位编排策略仿真算法 1 波位编排的最优化 相控阵雷达的扫描空域一般在修正球坐标系下进行指定,它的坐标原点为雷达站,雷达阵面法线在水平面的投影作为方位角的零度,顺时针为正,逆时针为负,有效取值范围为[-π/2,π/2],以水平面作为俯仰角的零度,向上为正…