[发明专利]一种日志消息输出方法及装置在审
申请号: | 202011621666.0 | 申请日: | 2020-12-30 |
公开(公告)号: | CN112612760A | 公开(公告)日: | 2021-04-06 |
发明(设计)人: | 臧虎;谢钊 | 申请(专利权)人: | 中国农业银行股份有限公司 |
主分类号: | G06F16/17 | 分类号: | G06F16/17;G06F16/172 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 刘晓菲 |
地址: | 100005 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 日志 消息 输出 方法 装置 | ||
本申请实施例公开了一种日志消息输出方法及装置,预先设定固定内存容量的日志消息缓冲区,日志消息缓冲区包括预设数目个日志消息缓冲队列,方法包括:记录函数调用链上发生函数调用异常的当前日志消息;调用日志插入函数,根据日志消息队列的插入索引将当前日志消息存储至日志消息缓冲队列,调用日志输出函数,将日志消息缓冲队列中的多条日志消息输出至外部缓冲区。由此可见,本申请实施例避免了使用动态分配函数分配的内存存储日志消息,而是利用预先设定好的日志消息缓冲区,在进行日志存储和输出时采用控制字节长度提高可靠性,能够保证日志模块在系统异常发生时,日志消息的记录和输出具有可靠性。
技术领域
本申请涉及计算机领域,尤其涉及一种日志消息输出方法及装置。
背景技术
当前每个系统都需要部署日志模块,记录系统的日常运行情况。日志模块最重要的一部分是记录系统在运行时出现异常的情况,以便之后技术人员根据日志模块记录的信息,分析系统异常发生的原因,解决系统的异常问题。系统在运行的时候,涉及在系统中的不同模块间的接口或函数的互相调用,如图1所示,为函数调用的示意图。在进行函数调用的时候,可能会出现调用异常的情况,因此就需要日志模块记录下尽可能详细的调用链情况。
现有的系统异常发生时刻记录完整函数调用链的日志模块的方案中,使用了依赖动态内存分配函数分配的内存作为日志消息缓冲区,若系统的内存空间不足,日志模块在记录日志消息时就可能因为调用动态内存分配函数申请内存失败而导致日志消息记录失败,这对于日志模块记录系统发生异常的日志消息是非常不利的,因为日志模块作为技术人员定位系统异常的关键一环必须保证能够在这种高度不稳定甚至是接近崩溃的环境下正确执行日志的记录功能,因此日志模块应该具有远高于一般程序的可靠性。
并且,在将记录系统异常情况的日志消息输出到磁盘时,需要维护一个保持磁盘文件打开状态的文件句柄,在输出完毕之后,还要将文件句柄进行关闭,保证日志资源不会发生泄露风险。但是当系统发生异常时,文件句柄可能也发生异常,导致记录的日志消息无法从内存中顺利输出,进而导致日志模块崩溃,技术人员依然无法得知系统发生异常时的具体情况。
也就是说,当前的日志模块由于利用依赖动态内存分配函数分配的内存作为日志消息缓冲区,不能保证日志消息在记录时的可靠性。当前的日志模块将日志消息输出到磁盘时,由于需要维护文件句柄降低了日志消息输出的可靠性。
综上,当前的日志模块无法保证在系统异常发生时,日志消息的记录和输出的可靠性。
发明内容
为了解决现有技术中日志模块无法保证在系统异常发生时,日志消息的记录和输出的可靠性的问题,本申请提供了一种日志消息输出方法,能够保证日志模块在系统异常发生时,日志消息的记录和输出具有可靠性。
本申请实施例还提供一种日志消息输出方法,预先设定固定内存容量的日志消息缓冲区,所述日志消息缓冲区包括预设数目个日志消息缓冲队列;
所述方法包括:
记录函数调用链上发生函数调用异常的当前日志消息;
判断所述当前日志消息的字节长度是否超过预先设定的日志消息的最大字节长度,若否,则直接调用日志插入函数,根据所述日志消息队列的插入索引将所述当前日志消息存储至所述日志消息缓冲队列,若是,则将所述当前日志消息中超过最大字节长度的部分进行删除,得到截断日志消息,调用所述日志插入函数,根据所述插入索引将所述截断日志消息存储至所述日志消息缓冲队列;
判断所述日志消息缓冲队列中的多条日志消息的总字节长度是否超过外部缓冲区的可用字节长度,若否,则调用所述日志输出函数,将所述日志消息缓冲队列中的多条日志消息输出至所述外部缓冲区,若是,则将所述日志消息缓冲队列中超过所述外部缓冲区的可用字节长度的部分进行删除,得到截断日志消息缓冲队列的多条日志消息,调用日志输出函数,将所述截断日志消息缓冲队列的多条日志消息输出至外部缓冲区,其中,所述外部缓冲区用于用户直接对所述多条日志消息进行处理。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国农业银行股份有限公司,未经中国农业银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011621666.0/2.html,转载请声明来源钻瓜专利网。