一种日志记录方法以及系统与流程

文档序号:14518968阅读:149来源:国知局
一种日志记录方法以及系统与流程

本发明涉及信息维护领域,尤其涉及一种日志记录方法以及系统。



背景技术:

日志是软件系统的一个重要功能,它时刻记录系统的允许情况,当系统出现异常时,开发调试人员可以从日志中定位引起问题的原因,可以在很大程度上较少问题解决时间,有效的提高问题解决效率。

现有的记录日志的处理方式主要有两种。第一种如图1所示,当前软件系统记录日志应用线程写日志前先打开日志文件,日志文件打开成功后将日志记录到文件中,日志记录完毕后关闭日志文件;第二种是建立专门的日志处理线程,将日志记录到固定的缓冲区,然后发给日志处理线程记录日志。

以上两种处理方式中,前者会因为频繁操作文件和直接写文件导致处理性能下降,后者会因为每个日志包都分配固定大小存储空间造成内存浪费或日志过长时打印不全。



技术实现要素:

本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种日志记录方法以及系统。

本发明解决其技术问题所采用的技术方案是:构造一种日志记录方法,包括:

s1、主线程启动后创建日志处理线程;

s2、创建至少一个应用线程;

s3、应用线程根据当前日志长度生成日志消息包并发送给日志处理线程;

s4、日志处理线程解析得到的日志消息包并将日志记录到日志文件。

在本发明所述的日志记录方法中,所述步骤s3包括:应用线程根据当前日志长度动态申请内存存储空间,将当前日志写入申请到的内存存储空间中以生成所述日志消息包,并将日志消息包发送给日志处理线程,再返回处理其他业务。

在本发明所述的日志记录方法中,所述步骤s1还包括:日志处理线程根据当前时间信息定时创建以当前时间信息命名的日志文件;

所述步骤s4中所述的将日志记录到日志文件包括:将日志记录到当前时间信息所对应的日志文件。

在本发明所述的日志记录方法中,所述步骤s1还包括:间隔一定时间创建一个日志文件夹,并在该日志文件夹内定时创建多个所述日志文件。

在本发明所述的日志记录方法中,定时创建的日志文件位于硬盘中。

本发明还公开了一种日志记录系统,包括:

日志处理线程创建模块,用于在主线程启动后创建日志处理线程;

应用线程创建模块,用于在日志处理线程创建后创建至少一个应用线程;

其中,应用线程用于根据当前日志长度生成日志消息包并发送给日志处理线程,日志处理线程用于解析得到的日志消息包并将日志记录到日志文件。

在本发明所述的日志记录系统中,所述的将生成的日志消息包发送给日志处理线程包括:应用线程根据当前日志长度动态申请内存存储空间,将当前日志写入申请到的内存存储空间中以生成所述日志消息包,并将日志消息包发送给日志处理线程,再返回处理其他业务。

在本发明所述的日志记录系统中,日志处理线程还用于根据当前时间信息定时创建以当前时间信息命名的日志文件;

所述的将日志记录到日志文件包括:将日志记录到当前时间信息所对应的日志文件。

在本发明所述的日志记录系统中,日志处理线程还用于间隔一定时间创建一个日志文件夹,并在该日志文件夹内定时创建多个所述日志文件。

在本发明所述的日志记录系统中,定时创建的日志文件位于硬盘中。

实施本发明的日志记录方法以及系统,具有以下有益效果:本发明使用专门的日志线程处理日志,使日志发起方不再直接操作日志文件线程,不占用应用线程多余时间,使应用线程把时间都用在业务处理上,提高日志发起方的其它业务处理性能;且根据当前日志长度生成日志消息包,不会造成存储空间的浪费或者存储空间不够导致日志记录不全;进一步的,本发明定时创建以当前时间信息命名的日志文件,避免单个日志文件过大,且方便查询和传输。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1是一种传统的记录日志的时序图;

图2是本发明的日志记录方法的流程图;

图3是本发明的日志记录方法的时序图。

具体实施方式

为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。

为了解决现有技术中,因为频繁操作文件和直接写文件导致处理性能下降的缺陷,本发明使用专门的日志线程处理日志,使日志发起方不再直接操作日志文件线程,不占用应用线程多余时间,使应用线程把时间都用在业务处理上,提高日志发起方的其它业务处理性能。为了解决每个日志包分配固定大小存储空间造成内存浪费或日志过长时打印不全的问题,本发明根据当前日志长度生成日志消息包,不会造成存储空间的浪费或者存储空间不够导致日志记录不全。

下面结合具体的实施例对本发明进行详细说明。

参考图2是本发明的日志记录方法的流程图;图3是本发明的日志记录方法的时序图。

本发明的日志记录方法包括:

s1、主线程启动后创建日志处理线程;

s2、创建至少一个应用线程;

s3、应用线程根据当前日志长度生成日志消息包并发送给日志处理线程;

s4、日志处理线程解析得到的日志消息包并将日志记录到日志文件。

本发明中多个应用线程可以同时向日志处理线程发送日志消息包,日志处理线程可以处理多个应用线程发送的日志消息包。应用线程发送日志消息后便立即返回处理其它业务,不必等待日志处理结束,日志记录和正常业务处理并发执行。

具体的,所述步骤s3包括:应用线程根据当前日志长度动态申请内存存储空间,将当前日志写入申请到的内存存储空间中以生成所述日志消息包,并将日志消息包发送给日志处理线程,再返回处理其他业务。

优选的,所述步骤s1还包括:日志处理线程根据当前时间信息定时创建以当前时间信息命名的日志文件;其中,定时创建的日志文件位于硬盘中。

相应的,所述步骤s4中所述的将日志记录到日志文件包括:将日志记录到当前时间信息所对应的日志文件。

可以理解的是,具体的日志文件创建间隔可以根据系统的日志写入频率设定,如果系统写入日志比较频繁,则可以将时间间隔设定短一些,如果系统只是偶尔写入日志,则将时间间隔设定长一些。比如,对于写入比较频繁的情况,可以以小时为单位,在每个整点时刻创建一个日志文件,以记录此后一个小时内的所有日志。

由于本发明定时创建以当前时间信息命名的日志文件,避免单个日志文件过大,且方便查询和传输。

进一步优选的,所述步骤s1还包括:间隔一定时间创建一个日志文件夹,并在该日志文件夹内定时创建多个所述日志文件。

例如,假定日志创建目录为/log,系统根据写入频率,设定间隔一个月创建一个文件夹,间隔一天创建一个日志文件。在2016-11-1409:28:50系统出现异常,产生一条异常日志,日志内容为一条字符串,记录了具体的异常内容,则此条异常日志会写入硬盘上的/log/2016-11的文件夹内的文件名为14的日志文件中。技术人员进行维护时,如需查询日志,可以根据时间快速调取相应的日志文件。

相应的,本发明还公开了一种与上述方法对应的日志记录系统,该日志记录系统包括:

日志处理线程创建模块,用于在主线程启动后创建日志处理线程;

应用线程创建模块,用于在日志处理线程创建后创建至少一个应用线程;

其中,应用线程用于根据当前日志长度生成日志消息包并发送给日志处理线程,日志处理线程用于解析得到的日志消息包并将日志记录到日志文件。

具体的,所述的将生成的日志消息包发送给日志处理线程包括:应用线程根据当前日志长度动态申请内存存储空间,将当前日志写入申请到的内存存储空间中以生成所述日志消息包,并将日志消息包发送给日志处理线程,再返回处理其他业务。

优选的,日志处理线程还用于根据当前时间信息定时创建以当前时间信息命名的日志文件;定时创建的日志文件位于硬盘中。

相应的,所述的将日志记录到日志文件包括:将日志记录到当前时间信息所对应的日志文件。

进一步优选的,日志处理线程还用于间隔一定时间创建一个日志文件夹,并在该日志文件夹内定时创建多个所述日志文件。

综上所述,实施本发明的日志记录方法以及系统,具有以下有益效果:本发明使用专门的日志线程处理日志,使日志发起方不再直接操作日志文件线程,不占用应用线程多余时间,使应用线程把时间都用在业务处理上,提高日志发起方的其它业务处理性能;且根据当前日志长度生成日志消息包,不会造成存储空间的浪费或者存储空间不够导致日志记录不全;进一步的,本发明定时创建以当前时间信息命名的日志文件,避免单个日志文件过大,且方便查询和传输。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1