应用SpringAOP及Tlog工具完成日志链路追踪、收集、持久化
2021/11/22 23:10:54
本文主要是介绍应用SpringAOP及Tlog工具完成日志链路追踪、收集、持久化,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
❌一、痛点
目前我司各系统的日志管理比较原始,使用logback打日志到log文件,虽然有服务管理平台,但记录的日志也仅仅是前置机调用后台系统的出入参,当遇到问题时查日志较为麻烦。
登录VPN-打开服务器-找到日志目录-打开日志文件-搜索
而这个过程也仅仅是在一台服务器上的操作,一般需要看前置机、后台系统甚至服务管理平台。
当用户较少时,通过先后顺序等其他标志还能查到,但当调用量稍多后就很难判断哪个日志是哪个操作发出的。
另外,我司产品前台面向用户,后台与多家公司产品有大量互相调用,当用户遇到问题首先投诉的是我司产品,如在日志中找不到问题点,背锅的就是我们。
✔️二、解决思路
任务有2个
- 链路追踪,一次调用的日志,无论跨多少平台都能串起来;
- 日志存库,这主要是为了开发一个日志查询功能,提供给运维人员。
2.1、Tlog
经过一番考察吧,对于链路追踪,我们选用了Tlog这个日志追踪工具。主页链接:yomahub.com/tlog/
主要考虑点是:
- 最基础的功能:日志打标签,并且支持标签模板的自定义,可通过TLogContext.getTraceId()和TLogContext.putTraceId(id)获取和设置id;
- 业务代码无侵入
不过对HttpClient是侵入式的,需要加拦截器
这个拦截器的实现还是颇为简单
public class TLogHttpClientInterceptor implements HttpRequestInterceptor { private static final Logger log = LoggerFactory.getLogger(TLogHttpClientInterceptor.class); @Override public void process(final HttpRequest request, final HttpContext context) throws HttpException, IOException { Args.notNull(request, "HTTP request"); String traceId = TLogContext.getTraceId(); if(StringUtils.isNotBlank(traceId)) { String appName = TLogSpringAware.getProperty("spring.application.name"); request.addHeader(TLogConstants.TLOG_TRACE_KEY, traceId); request.addHeader(TLogConstants.TLOG_SPANID_KEY, SpanIdGenerator.generateNextSpanId()); request.addHeader(TLogConstants.PRE_IVK_APP_KEY, appName); request.addHeader(TLogConstants.PRE_IVK_APP_HOST, LocalhostUtil.getHostName()); request.addHeader(TLogConstants.PRE_IP_KEY, LocalhostUtil.getHostIp()); } else { log.debug("[TLOG]鏈湴threadLocal鍙橀噺娌℃湁姝g‘浼犻�抰raceId,鏈璋冪敤涓嶄紶閫抰raceId"); } } }
不过需要注意的点是,有一些方法使用了Hutool高版本提供的方法,注意项目中版本冲突的解决。
对Tlog的集成还有一个问题,公司使用的服务管理平台由其他部门开发管理,需要该部门协同解决,不过好在我们可以拿到源码
这篇关于应用SpringAOP及Tlog工具完成日志链路追踪、收集、持久化的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南