System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种支持定时任务和消息队列进行日志追踪的方法及装置制造方法及图纸_技高网

一种支持定时任务和消息队列进行日志追踪的方法及装置制造方法及图纸

技术编号:40789520 阅读:4 留言:0更新日期:2024-03-28 19:19
本申请涉及进项发票系统技术领域,解决了现有技术中在创建新的线程去完成定时任务或消息消费时存在的因缺少Tracing信息而导致的相关任务的问题排查和日志链路追溯难度大的问题,公开了一种支持定时任务和消息队列进行日志追踪的方法及装置,该方法包括:创建Tracing信息,将Tracing信息保存在用于执行事件的线程的本地线程变量中,若后续事件执行线程的日志输出,则从所述本地线程变量中取出Tracing信息与所述日志一起输出,该方法通过traceId和spanId作为任务线程完整日志查询的关键字,一次性获取任务线程相关的全部日志输出,极大的便利的相关日志的查询和追溯效率,降低相关问题排查难度。

【技术实现步骤摘要】

本申请涉及进项发票系统,尤其是一种支持定时任务和消息队列进行日志追踪的方法及装置


技术介绍

1、进项发票系统是一个用于管理进项发票的软件系统。它可以帮助企业实现进项发票的自动采集、识别、匹配和抵扣等功能,提高企业的财务管理效率和准确性,进项发票系统中应用消息队列apache rocket mq完成异步消息发送和消费,应用定时任务quartz完成定时任务编排。

2、在实际系统运行中,当消息队列消费消息时会在服务中创建新的线程去完成消息的消费,而新建的线程中缺少对父线程tracing数据传递的实现,导致新线程在打印日志时,日志记录中的traceid和spanid属性值为空字符串,从而导致该段日志记录与消息发送者所在线程日志链路断开关联,增大了在排查消息消费相关问题时的日志链路追溯难度。

3、定时任务也会在任务启动时创建新的线程去完成定时任务,也存日志信息中缺少tracing信息问题,导致增大相关任务的问题排查难度。


技术实现思路

1、本申请的目的在于克服现有技术中在创建新的线程去完成定时任务或消息消费时存在的因缺少tracing信息而导致的相关任务的问题排查和日志链路追溯难度大的问题,提供一种支持定时任务和消息队列进行日志追踪的方法及装置。

2、第一方面,提供了一种支持定时任务和消息队列进行日志追踪的方法,包括:

3、监控事件是否触发,响应于事件触发则执行事件并创建tracing信息;

4、将tracing信息保存在用于执行事件的线程的本地线程变量中;

5、响应于后续事件执行线程的日志输出,则从所述本地线程变量中取出tracing信息与所述日志一起输出。

6、进一步的,所述事件包括应用消息队列完成异步消息发送和消费,以及应用定时任务完成定时任务编排。

7、进一步的,所述tracing信息包括主线程日志、子线程日志、父线程日志和线程启动时间。

8、进一步的,响应于触发应用定时任务完成定时任务编排,则在执行定时任务的线程中通过brave组件的startscopespan方法创建父线程tracing信息,将父线程tracing信息保存在执行定时任务的线程的本地线程变量中,在后续任务执行线程的日志输出时,从执行定时任务的线程的本地线程变量中取出父线程tracing信息一起输出。

9、进一步的,响应于触发应用消息队列完成异步消息发送和消费,若调用消息队列的生产者发送消息,则在当前线程创建子线程tracing信息,并将所述子线程tracing信息保存到消息属性中,消费者在收到消息后从消息属性中取出子线程tracing信息,并将所述子线程tracing信息保存到消费线程的本地线程变量中,在后续消费线程输出日志时,从消费线程的本地线程变量中取出子线程tracing信息一起输出。

10、第二方面,提供了一种支持定时任务和消息队列进行日志追踪的装置,包括:

11、创建模块,用于监控事件是否触发,响应于事件触发则执行事件并创建tracing信息;

12、保存模块,用于将tracing信息保存在用于执行事件的线程的本地线程变量中;

13、输出模块,响应于后续事件执行线程的日志输出,则从所述本地线程变量中取出tracing信息与所述日志一起输出。

14、进一步的,所述事件包括应用消息队列完成异步消息发送和消费,以及应用定时任务完成定时任务编排。

15、进一步的,所述tracing信息包括主线程日志、子线程日志、父线程日志和线程启动时间。

16、第三方面,提供了一种计算机可读存储介质,所述计算机可读介质存储用于设备执行的程序代码,该程序代码包括用于执行如第一方面中的任意一种实现方式中方法的步骤。

17、第四方面,提供了一种电子设备,所述电子设备包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面中的任意一种实现方式中的方法。

18、本申请具有如下有益效果:本申请通过在消息队列和定时任务中添加tracing信息,在创建新线程时将父线程的tracing信息传入新线程中,让线程在输出日志时输出包含traceid和spanid的tracing信息,完善消息队列上层接口和定时任务的调用日志链路,使得定时任务或消息队列在系统中输出日志时,可以通过traceid和spanid作为任务线程完整日志查询的关键字,一次性获取任务线程相关的全部日志输出,极大的便利的相关日志的查询和追溯效率,降低相关问题排查难度。

本文档来自技高网...

【技术保护点】

1.一种支持定时任务和消息队列进行日志追踪的方法,其特征在于,包括:

2.根据权利要求1所述的支持定时任务和消息队列进行日志追踪的方法,其特征在于,所述事件包括应用消息队列完成异步消息发送和消费,以及应用定时任务完成定时任务编排。

3.根据权利要求1所述的支持定时任务和消息队列进行日志追踪的方法,其特征在于,所述Tracing信息包括主线程日志、子线程日志、父线程日志和线程启动时间。

4.根据权利要求2所述的支持定时任务和消息队列进行日志追踪的方法,其特征在于,响应于触发应用定时任务完成定时任务编排,则在执行定时任务的线程中通过Brave组件的startScopeSpan方法创建父线程Tracing信息,将父线程Tracing信息保存在执行定时任务的线程的本地线程变量中,在后续任务执行线程的日志输出时,从执行定时任务的线程的本地线程变量中取出父线程Tracing信息一起输出。

5.根据权利要求4所述的支持定时任务和消息队列进行日志追踪的方法,其特征在于,响应于触发应用消息队列完成异步消息发送和消费,若调用消息队列的生产者发送消息,则在当前线程创建子线程Tracing信息,并将所述子线程Tracing信息保存到消息属性中,消费者在收到消息后从消息属性中取出子线程Tracing信息,并将所述子线程Tracing信息保存到消费线程的本地线程变量中,在后续消费线程输出日志时,从消费线程的本地线程变量中取出子线程Tracing信息一起输出。

6.一种支持定时任务和消息队列进行日志追踪的装置,其特征在于,包括:

7.根据权利要求6所述的支持定时任务和消息队列进行日志追踪的装置,其特征在于,所述事件包括应用消息队列完成异步消息发送和消费,以及应用定时任务完成定时任务编排。

8.根据权利要求6所述的支持定时任务和消息队列进行日志追踪的装置,其特征在于,所述Tracing信息包括主线程日志、子线程日志、父线程日志和线程启动时间。

9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储用于设备执行的程序代码,该程序代码包括用于执行如权利要求1-5中任一项所述方法的步骤。

10.一种电子设备,其特征在于,所述电子设备包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1-5中任一项所述的方法。

...

【技术特征摘要】

1.一种支持定时任务和消息队列进行日志追踪的方法,其特征在于,包括:

2.根据权利要求1所述的支持定时任务和消息队列进行日志追踪的方法,其特征在于,所述事件包括应用消息队列完成异步消息发送和消费,以及应用定时任务完成定时任务编排。

3.根据权利要求1所述的支持定时任务和消息队列进行日志追踪的方法,其特征在于,所述tracing信息包括主线程日志、子线程日志、父线程日志和线程启动时间。

4.根据权利要求2所述的支持定时任务和消息队列进行日志追踪的方法,其特征在于,响应于触发应用定时任务完成定时任务编排,则在执行定时任务的线程中通过brave组件的startscopespan方法创建父线程tracing信息,将父线程tracing信息保存在执行定时任务的线程的本地线程变量中,在后续任务执行线程的日志输出时,从执行定时任务的线程的本地线程变量中取出父线程tracing信息一起输出。

5.根据权利要求4所述的支持定时任务和消息队列进行日志追踪的方法,其特征在于,响应于触发应用消息队列完成异步消息发送和消费,若调用消息队列的生产者发送消息,则在当前线程创建子线程tracing信息,并将所述子线...

【专利技术属性】
技术研发人员:何建东叶少宁李翔魏美钟
申请(专利权)人:杭州每刻科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1