The TLog recommended in this issue is a lightweight distributed log tag tracking artifact, which can be connected in 10 minutes and automatically tag logs to complete microservice link tracking. Support log4j, log4j2, logback three log frameworks, support dubbo, dubbox, springcloud three RPC frameworks.
Introduction to TLog
1.TLog labels logs to trace enterprise-class microservices. It does not collect logs, is simple to use, and produces globally unique tracking codes. In addition to tracking codes, TLog also supports the addition of SpanId and upstream and downstream service information tags.
2.Designed for user convenience, it provides a completely zero-intrusion access mode, automatically probes the RPC framework and log framework used in the project, and performs bytecode injection to complete the addition of system-level log labels.
3.TLog ADAPTS to the mainstream RPC frameworks on the market: dubbo, dubbox, spring cloud’s open feign.
4.TLog provides Javaagent, bytecode injection, and log framework to adapt to three access modes, which ensure no performance loss. Supports uninterrupted tracing in service asynchronous threads, thread pools, and log asynchronous output scenarios.
Project characteristics
1.Lightweight microservice log tracing by labeling logs
2.Three access modes are provided: javaagent completely non-intrusive access, bytecode one-line access, and configuration file based access
3.Support common log4j, log4j2, logback three log frameworks, and provide automatic detection, complete adaptation
4.Supports Spring Cloud Gateway and Soul Gateway
5.http call label passing for HttpClient and Okhttp
6.Support for three task frameworks, JDK TimerTask, Quartz, XXL-JOB
7.Supports the configuration of a custom log label template, and provides multiple options for system-level buried point labels
8.Supports asynchronous thread tracing, including thread pools, multi-level asynchronous threads and other scenarios
9.Almost no performance loss, fast and stable, after pressure test, the loss is 0.01%
Installing TLog
TLog provides two different dependencies on springboot and spring native, which rely on only one package and pass in the required packages.
springboot dependency
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>tlog-all-spring-boot-starter</artifactId>
<version>1.3.4</version>
</dependency>
spring native dependency
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>tlog-all</artifactId>
<version>1.3.4</version>
</dependency>
Log framework adaptation (example Log4j framework adapter)
Synchronous logging: Just change the layout implementation class
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration>
<appender name="stdout" class="org.apache.log4j.ConsoleAppender">
<!--change for 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"/>
<!--change for 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>
Asynchronous logging: Just replace the implementation class of the 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>
<!--Replace here with 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>
Task framework support (example XXL-JOB framework)
Starting with version 1.3.0, TLog supports the open source framework XXL-JOB.
In the springboot environment, you don’t need to make any changes. You only need to introduce a dependency package to take effect.
In the spring native environment, you need to configure an extra line
<bean class="com.yomahub.tlog.springboot.lifecircle.TLogXxljobEnhanceInit"/>
TLog architecture diagram
