一种日志消息输出方法及装置制造方法及图纸

技术编号:27975340 阅读:30 留言:0更新日期:2021-04-06 14:09
本申请实施例公开了一种日志消息输出方法及装置,预先设定固定内存容量的日志消息缓冲区,日志消息缓冲区包括预设数目个日志消息缓冲队列,方法包括:记录函数调用链上发生函数调用异常的当前日志消息;调用日志插入函数,根据日志消息队列的插入索引将当前日志消息存储至日志消息缓冲队列,调用日志输出函数,将日志消息缓冲队列中的多条日志消息输出至外部缓冲区。由此可见,本申请实施例避免了使用动态分配函数分配的内存存储日志消息,而是利用预先设定好的日志消息缓冲区,在进行日志存储和输出时采用控制字节长度提高可靠性,能够保证日志模块在系统异常发生时,日志消息的记录和输出具有可靠性。

【技术实现步骤摘要】
一种日志消息输出方法及装置
本申请涉及计算机领域,尤其涉及一种日志消息输出方法及装置。
技术介绍
当前每个系统都需要部署日志模块,记录系统的日常运行情况。日志模块最重要的一部分是记录系统在运行时出现异常的情况,以便之后技术人员根据日志模块记录的信息,分析系统异常发生的原因,解决系统的异常问题。系统在运行的时候,涉及在系统中的不同模块间的接口或函数的互相调用,如图1所示,为函数调用的示意图。在进行函数调用的时候,可能会出现调用异常的情况,因此就需要日志模块记录下尽可能详细的调用链情况。现有的系统异常发生时刻记录完整函数调用链的日志模块的方案中,使用了依赖动态内存分配函数分配的内存作为日志消息缓冲区,若系统的内存空间不足,日志模块在记录日志消息时就可能因为调用动态内存分配函数申请内存失败而导致日志消息记录失败,这对于日志模块记录系统发生异常的日志消息是非常不利的,因为日志模块作为技术人员定位系统异常的关键一环必须保证能够在这种高度不稳定甚至是接近崩溃的环境下正确执行日志的记录功能,因此日志模块应该具有远高于一般程序的可靠性。并且,在本文档来自技高网...

【技术保护点】
1.一种日志消息输出方法,其特征在于,预先设定固定内存容量的日志消息缓冲区,所述日志消息缓冲区包括预设数目个日志消息缓冲队列;/n所述方法包括:/n记录函数调用链上发生函数调用异常的当前日志消息;/n判断所述当前日志消息的字节长度是否超过预先设定的日志消息的最大字节长度,若否,则直接调用日志插入函数,根据所述日志消息队列的插入索引将所述当前日志消息存储至所述日志消息缓冲队列,若是,则将所述当前日志消息中超过最大字节长度的部分进行删除,得到截断日志消息,调用所述日志插入函数,根据所述插入索引将所述截断日志消息存储至所述日志消息缓冲队列;/n判断所述日志消息缓冲队列中的多条日志消息的总字节长度是否...

【技术特征摘要】
1.一种日志消息输出方法,其特征在于,预先设定固定内存容量的日志消息缓冲区,所述日志消息缓冲区包括预设数目个日志消息缓冲队列;
所述方法包括:
记录函数调用链上发生函数调用异常的当前日志消息;
判断所述当前日志消息的字节长度是否超过预先设定的日志消息的最大字节长度,若否,则直接调用日志插入函数,根据所述日志消息队列的插入索引将所述当前日志消息存储至所述日志消息缓冲队列,若是,则将所述当前日志消息中超过最大字节长度的部分进行删除,得到截断日志消息,调用所述日志插入函数,根据所述插入索引将所述截断日志消息存储至所述日志消息缓冲队列;
判断所述日志消息缓冲队列中的多条日志消息的总字节长度是否超过外部缓冲区的可用字节长度,若否,则调用所述日志输出函数,将所述日志消息缓冲队列中的多条日志消息输出至所述外部缓冲区,若是,则将所述日志消息缓冲队列中超过所述外部缓冲区的可用字节长度的部分进行删除,得到截断日志消息缓冲队列的多条日志消息,调用日志输出函数,将所述截断日志消息缓冲队列的多条日志消息输出至外部缓冲区,其中,所述外部缓冲区用于用户直接对所述多条日志消息进行处理。


2.根据权利要求1所述的方法,其特征在于,所述日志消息缓冲区包括多个预先设定的日志消息缓冲队列,预先设定多个所述日志插入函数,所述日志消息缓冲队列的数目与日志插入函数的数目相同,所述日志插入函数与所述日志消息缓冲队列一一对应;
所述调用日志插入函数,根据所述日志消息队列的插入索引将所述当前日志消息存储至所述日志消息缓冲队列包括:
根据所述当前日志消息确定对应的日志插入函数,根据所述日志插入函数确定对应的日志消息缓冲队列;
调用所述对应的日志插入函数,根据所述插入索引将所述当前日志消息存储至对应的日志消息缓冲队列。


3.根据权利要求1或2所述的方法,其特征在于,预先设定所述日志消息缓冲队列的日志消息的最大数目,所述最大数目根据所述固定内存容量的日志消息缓冲区确定;
在判断所述当前日志消息的字节长度是否超过所述预先设定的日志消息的最大字节长度之前,所述方法还包括:
判断所述日志消息缓冲队列的日志消息的当前数目是否超过所述预先设定的日志消息的最大数目,若是,返回错误值,若否,则继续判断所述当前日志消息的字节长度是否超过所述预先设定的日志消息的最大字节长度。


4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在将所述日志消息缓冲队列中的多条日志消息输出至所述外部缓冲区之后,清空所述日志消息缓冲队列中的多条日志消息。


5.根据权利要求4所述的方法,其特征在于,所述清空所述日志消息缓冲队列中的多条日志消息包括:
调用所述日志输出函数清空所述日志消息缓冲队列中的多条日志消息。


6.根据权利要求4所述的方法,其特征在于,所述清空所述日志消息缓冲队列中的多条日志消息包括:
调用日志清空函数将所述日志消息队列的多条日志消息进行清空。


7.根据权利要求1所...

【专利技术属性】
技术研发人员:臧虎谢钊
申请(专利权)人:中国农业银行股份有限公司
类型:发明
国别省市:北京;11

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

1