写点什么

轻量级分布式日志追踪 -Tlog 快速入门

作者:javalover123
  • 2023-06-06
    广东
  • 本文字数:1828 字

    阅读完需:约 6 分钟

轻量级分布式日志追踪-Tlog快速入门

一、前言

  • 公司目前还没有上 SkyWalking、Pinpoint 等分布式追踪系统,所以先用个轻量级的吧

  • Tlog:只生成 TraceId 写入日志文件,没有 收集、存储、查询,所以 轻量

  • 以 spring-boot 2.3.12(非 native) + log4j2 为例

二、快速入门

1. 选择接入方式

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:392020-09-16 18:12:56,763 [INFO] <0><7161457983341056> logback-dubbox-consumer:invoke method sayHello,name=jack  >> com.yomahub.tlog.example.dubbox.controller.DemoController:222020-09-16 18:12:56,763 [INFO] <0><7161457983341056> 测试日志aaaa  >> com.yomahub.tlog.example.dubbox.controller.DemoController:232020-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=jack2020-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/ ,其他平台需要审核更新慢一些。



发布于: 刚刚阅读数: 4
用户头像

javalover123

关注

还未添加个人签名 2016-07-16 加入

还未添加个人简介

评论

发布
暂无评论
轻量级分布式日志追踪-Tlog快速入门_分布式_javalover123_InfoQ写作社区