TLog提供了一种最简单的方式来解决日志追踪问题,它不收集日志,也不需要另外的存储空间,它只是自动的对你的日志进行打标签,自动生成TraceId贯穿你微服务的一整条链路。并且提供上下游节点信息。适合中小型企业以及想快速解决日志追踪问题的公司项目使用。
支持dubbo,dubbox,spring cloud三大RPC框架。
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>tlog-all-spring-boot-starter</artifactId>
<version>1.5.0</version>
</dependency>
TLogAspect
@TLogAspect({"id"})
public void demo1(String id,String name){
log.info("这是第一条日志");
log.info("这是第二条日志");
log.info("这是第三条日志");
new Thread(() -> log.info("这是异步日志")).start();
}
ch.qos.logback.classic.encoder.PatternLayoutEncoder
,改成com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder
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-all-spring-boot-starter
,会加载对应的spring.factories。加载TLogWebAutoConfiguration
和TLogAspectAutoConfiguration
到Spring容器中。TLogWebAutoConfiguration
该类会引入TLogWebConfig
,TLogWebConfig
会加入TLogWebInterceptor
。TLogAspectAutoConfiguration
会引入切面类AspectLogAop
。TLogWebInterceptor
会拦截请求,对header中的tlogTraceId,tlogSpanId,preIvkApp,preIvkHost,preIp存储到MDC中,TLogLabelGenerator#generateTLogLabel
会根据header生成tlogLabel,存入线程变量中,AspectLogContext.putLogValue(tlogLabel);
。AspectLogAop
会对带有@TLogAspect
注解的方法进行拦截处理,获取指定的标签和指定的converter,修改线程变量LogValue,AspectLogContext.putLogValue(currentLabel + " " + aspLogValue);
。AspectLogbackLayout
继承了PatternLayout
,对defaultConverterMap
重新设置了m
,msg
,message
的转化器,AspectLogbackConverter
。AspectLogbackConverter#convert
主要是把tlogLabel拼接在原来的日志信息中。