关于java:轻量级分布式日志追踪Tlog快速入门

3次阅读

共计 2840 个字符,预计需要花费 8 分钟才能阅读完成。

一、前言

  • 公司目前还没有上 SkyWalking、Pinpoint 等分布式追踪零碎,所以先用个轻量级的吧
  • Tlog:只生成 TraceId 写入日志文件,没有 收集、存储、查问,所以 轻量
  • 以 spring-boot 2.3.12(非 native) + log4j2 为例

二、疾速入门

1. 抉择接入形式

  • 日志框架适配器形式 最稳固,优先选择
  • 另有 Javaagent 形式、字节码注入形式

2. 装置

  • 倡议把 tlog 的依赖 放到 log4j2 后面,能够少批改 log4j2 配置文件
  • 原我的项目依赖 hutool 时,版本不统一可能包抵触
  • 全量依赖

          <dependency>
              <groupId>com.yomahub</groupId>
              <artifactId>tlog-all-spring-boot-starter</artifactId>
              <version>1.5.0</version>
          </dependency>
  • 按需依赖

          <dependency>
              <groupId>com.yomahub</groupId>
              <artifactId>tlog-feign-spring-boot-starter</artifactId>
              <version>1.5.0</version>
          </dependency>
          <dependency>
              <groupId>com.yomahub</groupId>
              <artifactId>tlog-web-spring-boot-starter</artifactId>
              <version>1.5.0</version>
          </dependency>

3. Log4j2 框架适配器

  • 如果 tlog 的依赖 没有放到 log4j2 后面,需把 pattern 中的 m/msg/message 改成 tm/tmsg/tmessage
  • 日志 pattern 没有蕴含 %X 变量 (MDC 变量) 时,能够不必减少 %TX{tl},会自动记录
  • 日志 pattern 蕴含 %X 变量时,需批改 pattern,减少 %TX{tl},记录 TraceId。否则不会记录 TraceId

4. 成果

启动日志:Converter key ‘message’ is already mapped to ‘class com.yomahub.tlog.core.enhance.log4j2.AspectLogLog4j2Converter’

2020-09-16 18:12:56,748 [WARN] [TLOG]从新生成 traceId[7161457983341056]  >> com.yomahub.tlog.web.TLogWebInterceptor:39
2020-09-16 18:12:56,763 [INFO] <0><7161457983341056> logback-dubbox-consumer:invoke method sayHello,name=jack  >> com.yomahub.tlog.example.dubbox.controller.DemoController:22
2020-09-16 18:12:56,763 [INFO] <0><7161457983341056> 测试日志 aaaa  >> com.yomahub.tlog.example.dubbox.controller.DemoController:23
2020-09-16 18:12:56,763 [INFO] <0><7161457983341056> 测试日志 bbbb  >> com.yomahub.tlog.example.dubbox.controller.DemoController:24

三、配置

1. 日志标签模板自定义

TLog 默认只打出 spanId 和 traceId,可批改 spring-boot 配置文件调整:

tlog.pattern=[$preApp][$preIp][$spanId][$traceId]

2. 主动打印调用参数和工夫

默认不打印 参数和工夫,可批改 spring-boot 配置文件调整:

tlog.enable-invoke-time-print=true

成果如下,办法结尾减少 一行记录参数日志,开端减少 耗时日志:

2020-12-01 19:20:07.768 [DubboServerHandler-127.0.0.1:30900-thread-2] INFO  c.y.tlog.dubbo.filter.TLogDubboInvokeTimeFilter - <0.1><7592057736843136> [TLOG]开始调用接口 [DemoService] 的办法[sayHello], 参数为:["jack"]
2020-12-01 19:20:07.787 [DubboServerHandler-127.0.0.1:30900-thread-2] INFO  c.y.t.example.dubbo.service.impl.DemoServiceImpl - <0.1><7592057736843136> logback-dubbox-provider:invoke method sayHello,name=jack
2020-12-01 19:20:07.788 [Thread-14] INFO  c.y.tlog.example.dubbo.service.impl.AsynDomain - <0.1><7592057736843136> 这是异步办法哦
2020-12-01 19:20:07.788 [Thread-14] INFO  c.y.tlog.example.dubbo.service.impl.AsynDomain - <0.1><7592057736843136> 异步办法开始
2020-12-01 19:20:07.789 [Thread-14] INFO  c.y.tlog.example.dubbo.service.impl.AsynDomain - <0.1><7592057736843136> 异步办法完结
2020-12-01 19:20:07.795 [DubboServerHandler-127.0.0.1:30900-thread-2] INFO  c.y.tlog.dubbo.filter.TLogDubboInvokeTimeFilter - <0.1><7592057736843136> [TLOG]完结接口 [DemoService] 中办法 [sayHello] 的调用, 耗时为:90 毫秒

3. 错误处理

  • but cannot be delegated to target bean. Switch its visibility to package or protected.
    定时工作办法 不能是 private,需改为 package 或 protected

四、总结

  • Tlog 适宜中小型企业以及想疾速解决日志追踪问题的公司我的项目应用
  • 想晓得 为什么 pattern 蕴含 %X 变量时,不减少 %TX{tl} 就不记录 TraceId 吗,留言 我再写一篇

本文首先公布于 https://www.890808.xyz/,其余平台须要审核更新慢一些。

正文完
 0