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

javalover123
• 阅读 454

一、前言

  • 公司目前还没有上 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: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/ ,其他平台需要审核更新慢一些。

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

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
Apache Synapse 远程代码执行漏洞(CVE
!(https://oscimg.oschina.net/oscnet/435fc4cde65d4aee9a2efca3080cb89e.png)0x00事件背景ApacheSynapse是一个简单、轻量级的高性能企业服务总线(ESB),它是在ApacheSoftwareFoun
Stella981 Stella981
3年前
Skywalking是什么
Skywalking是一个分布式追踪(Trace)系统。除了Skywalking之外,比较出名的分布式追踪系统还有Dapper、鹰眼、Pinpoint、Zipkin等等。要是大家不了解Trace系统,可以先Google,基本上都是根据Google的论文(http://bigbully.github.io/Dappertransl
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Stella981 Stella981
3年前
Linux下安装 SkyWalking 分布式追踪系统
Linux下安装SkyWalking分布式追踪系统完全无代码入侵【落地】背景:由于现系统拆分为了分布式系统,对于线上查看错误日志有点费劲方案:部署搭建SkyWalking的分布式追踪系统一、SkyWalking简介
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Stella981 Stella981
3年前
Linux日志安全分析技巧
0x00前言我正在整理一个项目,收集和汇总了一些应急响应案例(不断更新中)。GitHub地址:https://github.com/Bypass007/EmergencyResponseNotes本文主要介绍Linux日志分析的技巧,更多详细信息请访问Github地址,欢迎Star。0x01日志简介Lin
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
京东云开发者 京东云开发者
10个月前
分布式日志追踪ID实战 | 京东物流技术团队
本文通过介绍分布式应用下各个场景的全局日志ID透传思路,以及介绍分布式日志追踪ID简单实现原理和实战效果,从而达到通过提高日志查询排查问题的效率。背景开发排查系统问题用得最多的手段就是查看系统日志,相信不少人都值过班当过小秘吧:给下接口和出入参吧,麻烦看看
javalover123
javalover123
Lv1
10年Java经验,多个开源项目贡献者。https://github.com/javalover123
文章
16
粉丝
2
获赞
5