一个轻量级的分布式日志标记追踪神器,十分钟接入,非常好用!

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 一个轻量级的分布式日志标记追踪神器,十分钟接入,非常好用!



TLog简介

1、TLog通过对日志打标签完成企业级微服务的日志追踪。它不收集日志,使用简单, 产生全局唯一的追踪码。除了追踪码以外,TLog还支持SpanId和上下游服务信息 标签的追加。

2、为用户使用方便而设计,提供完全零侵入式接入方式,自动探测项目中使用的RPC框架和日志框架, 进行字节码的注入完成系统级日志标签的追加。

3、TLog适配了市面上主流的RPC框架:dubbo,dubbox,spring cloud的open feign。

4、TLog提供Javaagent,字节码注入,日志框架适配三种接入模式,无论是哪一种,都保证了无性能损耗。支持在业务异步线程,线程池, 日志异步输出这几种场景下追踪不中断。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

项目特性

1、通过对日志打标签完成轻量级微服务日志追踪

2、提供三种接入方式:javaagent完全无侵入接入,字节码一行代码接入,基于配置文件的接入

3、支持常见的log4j,log4j2,logback三大日志框架,并提供自动检测,完成适配

4、支持Spring Cloud Gateway和Soul网关

5、适配HttpClient和Okhttp的http调用标签传递

6、支持三种任务框架,JDK的TimerTask,Quartz,XXL-JOB

7、支持日志标签的自定义模板的配置,提供多个系统级埋点标签的选择

8、支持异步线程的追踪,包括线程池,多级异步线程等场景

9、几乎无性能损耗,快速稳定,经过压测,损耗在0.01%

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

安装TLog

TLog对springboot和spring 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"/>

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

从1.3.0版本开始,TLog对开源框架XXL-JOB作了支持。

在springboot环境下,你无需作任何改动。只需引入依赖包即可生效。

而在spring native环境下,你需要额外配置一行

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

TLog架构图

而在spring native环境下,你需要额外配置一行

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



相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
44 1
|
2月前
|
运维 NoSQL Java
SpringBoot接入轻量级分布式日志框架GrayLog技术分享
在当今的软件开发环境中,日志管理扮演着至关重要的角色,尤其是在微服务架构下,分布式日志的统一收集、分析和展示成为了开发者和运维人员必须面对的问题。GrayLog作为一个轻量级的分布式日志框架,以其简洁、高效和易部署的特性,逐渐受到广大开发者的青睐。本文将详细介绍如何在SpringBoot项目中接入GrayLog,以实现日志的集中管理和分析。
224 1
|
3月前
|
消息中间件 JSON 自然语言处理
Python多进程日志以及分布式日志的实现方式
python日志模块logging支持多线程,但是在多进程下写入日志文件容易出现下面的问题: PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。 也就是日志文件被占用的情况,原因是多个进程的文件handler对日志文件进行操作产生的。
|
3月前
|
应用服务中间件 nginx Docker
[loki]轻量级日志聚合系统loki快速入门
[loki]轻量级日志聚合系统loki快速入门
139 5
|
3月前
|
存储 监控 数据可视化
性能监控之JMeter分布式压测轻量日志解决方案
【8月更文挑战第11天】性能监控之JMeter分布式压测轻量日志解决方案
94 0
性能监控之JMeter分布式压测轻量日志解决方案
|
3月前
|
存储 消息中间件 缓存
Waltz 一种分布式预写日志系统
Waltz 一种分布式预写日志系统
45 1
|
11天前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
116 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
1月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
216 3
|
1月前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1625 14
|
1月前
|
Python
log日志学习
【10月更文挑战第9天】 python处理log打印模块log的使用和介绍
30 0