[发明专利]一种无感知生成全链路日志的方法在审
申请号: | 202211301966.X | 申请日: | 2022-10-24 |
公开(公告)号: | CN115509867A | 公开(公告)日: | 2022-12-23 |
发明(设计)人: | 汪才渊;姜平;巫安东 | 申请(专利权)人: | 焦点科技股份有限公司 |
主分类号: | G06F11/30 | 分类号: | G06F11/30 |
代理公司: | 南京瑞弘专利商标事务所(普通合伙) 32249 | 代理人: | 陈建和 |
地址: | 210032 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 感知 生成 全链路 日志 方法 | ||
1.一种无感知生成全链路日志的方法,其特征在于,包括如下步骤:
步骤1:在应用程序中引入支持MDC机制的日志框架,所述MDC机制用于在日志中注入调试信息,包括与当前输出日志的线程绑定的键值对映射表,用以将调试信息以键值对的形式存储在其中;
步骤2:根据应用的类型,确定日志链路的链路起点,所述链路起点在不同的应用类型下位置不同;
步骤3:在链路起点引入链路调用序列号生成逻辑,所述链路调用序列号生成逻辑包括解析链路调用序列号和将链路调用序列号添加至MDC容器中所述MDC容器是日志框架中MDC机制的具体实现;所述链路调用序列号生成逻辑包括检查请求头中是否存在透传的链路调用序列号,如果不存在,则生成一个随机字符串作为本次调用的链路调用序列号;
步骤4:在链路起点引入分支链路序列号生成逻辑,所述分支链路序列号生成逻辑包括解析分支链路序列号和将分支链路序列号添加至MDC容器中,所述分支链路序列号生成逻辑首先检查请求头中是否存在透传的分支链路序列号,如果不存在,则生成一个随机字符串作为分支链路序列号;
步骤5:根据应用的实现逻辑,确定日志链路的链路续接点,所述应用和链路续接点为一对多的映射关系,一个应用中同时存在多个链路续接点;
步骤6:根据链路续接点的类型,分别引入对应的链路续接逻辑;
步骤7:配置全局日志格式,在全局日志格式中设置链路调用序列号和分支链路序列号的注入点;
步骤8:调用日志打印方法;
步骤9:打印日志,将链路调用序列号和分支链路序列号追加到日志内容中。
2.如权利要求1所述的一种无感知生成全链路日志的方法,其特征在于:所述步骤1中,所述日志框架包括但不限于log4j、log4j2、logback;所述步骤2中,所述应用类型枚举为分布式定时任务应用和基于Servlet的Web应用,在定时任务应用中,链路起点是定时任务的回调函数,在基于Servlet的Web应用中,链路起点是Web应用的请求过滤器。
3.如权利要求2所述的一种无感知生成全链路日志的方法,其特征在于:所述步骤5中,所述日志链路的链路续接点包括Servlet请求过滤器续接点、分布式定时任务回调函数续接点、线程池续接点、HTTP请求处理器续接点和Feign远程调用续接点;所述Servlet请求过滤器续接点的续接逻辑包括:从HTTP请求头中解析透传的链路调用序列号和分支链路序列号,如果能够解析出预设格式的链路调用序列号和分支链路序列号,则将解析出的链路调用序列号和分支链路序列号添加至MDC容器中;所述分布式定时任务回调函数续接点的续接逻辑包括:从请求参数中解析透传的链路调用序列号和分支链路序列号,如果能够解析出正确格式的链路调用序列号和分支链路序列号,则将解析出的链路调用序列号和分支链路序列号添加至MDC容器中;所述线程池续接点续接方式包括:拦截线程池的执行方法,在原执行方法正式执行之前,清理当前工作线程持有的MDC容器中的历史数据,将父线程中持有的MDC容器的数据拷贝到当前工作线程持有的MDC容器中,生成一个随机字符串作为分支链路序列号并设置到当前工作线程持有的MDC容器中;所述HTTP请求处理器续接点的续接逻辑包括:拦截HTTP请求报文,在请求报文中添加当前线程MDC容器中存储的链路调用序列号和分支链路序列号;所述Feign远程调用续接点是针对Feign远程调用操作提供的续接点;所述Feign远程调用续接点的续接方式包括:在Feign框架提供的拦截器中,添加注入链路调用序列号和分支链路序列号的逻辑;所述Feign远程调用续接点注入链路调用序列号和分支链路序列号的逻辑包括:先从应用请求上下文中查找链路调用序列号和分支链路序列号,如果查找失败,则继续从当前线程持有的MDC容器中查找链路调用序列号和分支链路序列号,最后将查找到的链路调用序列号和分支链路序列号添加到请求头中。
4.如权利要求3所述的一种无感知生成全链路日志的方法,其特征在于:所述步骤5中,所述链路调用序列号和分支链路序列号的预设格式为:32位长度的字母数字字符串。
5.如权利要求4所述的一种无感知生成全链路日志的方法,其特征在于:所述步骤5中,所述32位长度的字母数字字符串通过UUID算法生成。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于焦点科技股份有限公司,未经焦点科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211301966.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种抽油杆端部直线度智能检测设备
- 下一篇:一种取消混匀料堆的烧结矿生产工艺