一种日志分析方法及系统与流程

文档序号:11230320阅读:346来源:国知局
一种日志分析方法及系统与流程

本发明涉及计算机技术领域,特别涉及一种日志分析方法及系统。



背景技术:

目前,在各个领域中程序规模越来越庞大。因此,对程序的稳定性,更新及时性等要求越来越高。对应的程序日志库非常多,比如glog,用于对程序的执行进行记录。日志库可以帮助程序员和测试人员发现和解决程序bug。

由于日志库仅具有单纯的记录功能,且日志库中的日志信息数量特别大,因此程序员和测试人员在大量的日志信息中寻找程序出现bug的原因时工作量也相当大;查询日志费时费力,且目前日志记录的日志信息往往不完整,很多时候,不能根据日志信息准确发现bug原因。导致许多程序不愿意添加日志信息。

如何,提高日志信息的利用率,使得程序员和测试人员能够快速获取日志分析结果,减轻程序员和测试人员分析日志信息的工作量,是本领域技术人员需要解决的技术问题。



技术实现要素:

本发明的目的是提供一种日志分析方法及系统,改进了旧有的只有单纯的日志信息记录功能,增加了日志分析功能,让日志信息更加清晰,完整,方便查询,极大的减轻了开发人员和测试人员的负担。

为解决上述技术问题,本发明提供一种日志分析方法,包括:

调用日志生成接口输出日志文件;

读取所述日志文件,并利用设定的函数标识定位程序对应的源代码位置;

根据所述源代码位置,利用函数进入标记和函数退出标记记录对应的程序执行流程,并读取函数执行耗时对应数值作为程序执行效率;

根据设定的输出字段,获取所述执行流程中所述输出字段对应数值信息。

可选的,所述调用日志生成接口输出日志文件,包括:

按照预定日志格式封装日志生成接口;其中,所述预定日志格式包含程序名、类名、函数名、代码行数、函数进入标记、函数退出标记、函数执行耗时、日志等级以及输出字段;

调用所述日志生成接口输出具有所述预定日志格式的日志文件。

可选的,读取所述日志文件,包括:

利用操作系统应用程序编程接口将所述日志文件输出到程序编辑器的输出窗口;和/或,

利用库函数将所述日志文件输出到本体日志文件;和/或,

利用库函数将所述日志文件输出到控制台;和/或,

利用tcp协议将所述日志文件输出到网络上的指定终端;和/或,

利用串行通讯端口将所述日志文件输出到串口设备。

可选的,所述利用设定的函数标识定位程序对应的源代码位置,包括:

通过所述程序名、所述类名、所述函数名以及所述代码行数定位程序对应的源代码位置。

可选的,所述根据设定的输出字段,获取所述执行流程中所述输出字段对应数值信息,包括:

根据设定的输出字段,获取所述执行流程中所述输出字段对应数值信息;其中,所述输出字段包括参数值字段、返回值字段、错误码字段、错误信息字段以及调试信息字段。

可选的,获取所述执行流程中所述输出字段对应数值信息之后,还包括:

当所述错误码字段或所述错误信息字段存在对应数值信息时,按照预定路径发出报警信息。

可选的,本申请还包括:

根据设定的筛选信息对输出的日志文件进行筛选。

本申请还提供一种日志分析系统,包括:

输出模块,用于调用日志生成接口输出日志文件;

读取模块,用于读取所述日志文件;

定位模块,用于利用设定的函数标识定位程序对应的源代码位置;

第一信息获取模块,用于根据所述源代码位置,利用函数进入标记和函数退出标记记录对应的程序执行流程,并读取函数执行耗时对应数值作为程序执行效率;

第二信息获取模块,用于根据设定的输出字段,获取所述执行流程中所述输出字段对应数值信息。

可选的,所述读取模块,包括:

第一读取单元,用于利用操作系统应用程序编程接口将所述日志文件输出到程序编辑器的输出窗口;和/或,

第二读取单元,用于利用库函数将所述日志文件输出到本体日志文件;和/或,

第三读取单元,用于利用库函数将所述日志文件输出到控制台;和/或,

第四读取单元,用于利用tcp协议将所述日志文件输出到网络上的指定终端;和/或,

第五读取单元,用于利用串行通讯端口将所述日志文件输出到串口设备。

可选的,本申请还包括:

筛选模块,用于根据设定的筛选信息对输出的日志文件进行筛选。

本发明所提供的一种日志分析方法,包括:调用日志生成接口输出日志文件;读取日志文件,并利用设定的函数标识定位程序对应的源代码位置;根据源代码位置,利用函数进入标记和函数退出标记记录对应的程序执行流程,并读取函数执行耗时对应数值作为程序执行效率;根据设定的输出字段,获取执行流程中输出字段对应数值信息;

可见,改进了旧有的只有单纯的日志信息记录功能,增加了日志分析功能,能够定位程序对应的源代码位置,获取程序执行流程以及程序执行效率,并能够得到设定的输出字段对应数值信息;通过这些数据信息的自动获取让日志信息更加清晰,完整,方便查询,极大的减轻了开发人员和测试人员的负担。本发明还提供了一种日志分析系统,具有上述有益效果,在此不再赘述。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例所提供的一种日志分析方法的流程图;

图2为本发明实施例所提供的一种日志分析系统的结构框图。

具体实施方式

本发明的核心是提供一种日志分析方法及系统,改进了旧有的只有单纯的日志信息记录功能,增加了日志分析功能,让日志信息更加清晰,完整,方便查询,极大的减轻了开发人员和测试人员的负担。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参考图1,图1为本发明实施例所提供的一种日志分析方法的流程图;该日志分析方法可以包括:

s100、调用日志生成接口输出日志文件;

具体的,该步骤的不要目的是输出日志文件,这里可以是输出全部的日志文件,后续步骤再对该输出的日志文件进行分析处理,或者对该输出日志进行筛选后再进行分析处理;也可以是输出指定的日志文件,即直接对原始日志文件进行筛选,输出有用的日志文件,后续再对该日志文件进行分析处理,以提高日志分析的效率,避免硬件计算资源的浪费。例如,通过设定过滤字段,得到用户需要关注的信息,过滤不需要关注的信息。

优选的,为了后续进行日志分析时,可以快速获取准确的日志信息,该步骤可以调整日志文件的输出格式,即利用日志生成接口输出具有一定格式的日志文件,本实施例并不对具体的格式信息进行限定,用户可以根据自身程序应用环境以及使用日志信息时的经验进行设定。例如这里的格式信息可以包含程序名、类名、函数名、代码行数、函数进入标记、函数退出标记、函数执行耗时、日志等级以及输出字段等。例如可以使用c++语言按照设定的日志格式封装成日志生成接口(日志生成库),在应用程序代码里面调用日志生成接口生成日志。具体的,调用日志生成接口输出日志文件可以包括:

按照预定日志格式封装日志生成接口;其中,预定日志格式包含程序名、类名、函数名、代码行数、函数进入标记、函数退出标记、函数执行耗时、日志等级以及输出字段;

调用日志生成接口输出具有预定日志格式的日志文件。

具体的,按照定义的日志格式,封装成日志生成接口;调用日志生成接口生成日志文件(即这里的日志生成接口根据原始日志文件生成日志文件即认为日志文件为该日志生成接口的输出)。

s110、读取日志文件,并利用设定的函数标识定位程序对应的源代码位置;

具体的,读取日志文件即读取输出的日志文件。读取输出的日志文件可以根据用户后续使用的方便通过网络等接收或读取到任意设定位置或设备。即日志文件可以输出到本体文件和/或通过网络传输到另一个终端。可选的,读取日志文件可以包括:

利用操作系统应用程序编程接口将日志文件输出到程序编辑器的输出窗口;例如过操作系统api输出到ide(程序编辑器)的输出窗口。和/或,

利用库函数将日志文件输出到本体日志文件;例如通过c++库函数输出到本地日志文件。和/或,

利用库函数将日志文件输出到控制台;例如通过c++库函数输出到控制台。和/或,

利用tcp协议将日志文件输出到网络上的指定终端;即通过tcp协议输出到网络上的其他接收终端。和/或,

利用串行通讯端口将日志文件输出到串口设备;例如通过com口输出到串口设备。

具体的,用户可以根据自身的实际需求选择相应的读取方式。即本实施例可以同时提供至少一种上述读取方式。本实施例读取方式的组合并不进行限定。

可选的,在读取到日志文件后还可以通过设定过滤字段,得到用户需要关注的信息,过滤不需要关注的信息。例如通过设置相应参数,过滤掉不需要关注的信息的方法可以包括:通过设定具体的类名、函数名、关键字和日志等级,筛选出设定符合设定要求的日志文件(即符合要求的日志信息)。通过这样的筛选过程可以进一步提高后续日志分析的效率。

利用设定的函数标识定位程序对应的源代码位置即根据用户需求确定目标代码在源代码中的位置。本实施例并不对具体的函数标识进行限定,例如函数标识可以是程序名、函数名等可以表示函数的标识。具体可以是通过程序名、类名、函数名以及代码行数定位程序对应的源代码位置。

s120、根据源代码位置,利用函数进入标记和函数退出标记记录对应的程序执行流程,并读取函数执行耗时对应数值作为程序执行效率;

具体的,该步骤可以通过函数进入标记、函数退出标记和函数执行耗时得到程序执行流程和程序执行效率。这里的程序执行效率即为一个程序的运行性能。

s130、根据设定的输出字段,获取执行流程中输出字段对应数值信息。

具体的,本实施例并不限定输出字段的具体内容,例如输出字段可以是参数值字段、返回值字段、错误码字段、错误信息字段以及调试信息字段等。根据程序所应用的领域以及要解决的程序的实际问题进行设置和修改。可选的,根据设定的输出字段,获取执行流程中输出字段对应数值信息可以包括:

根据设定的输出字段,获取执行流程中输出字段对应数值信息;其中,输出字段包括参数值字段、返回值字段、错误码字段、错误信息字段以及调试信息字段。即根据用户的自定义输出字段,得到程序执行过程中的信息。

通过本实施例的分析过程,程序bug(一个错误的日志信息),程序运行流程和状态(日志记录了函数的调用流程即程序执行流程)。从日志信息里,可以得到函数的执行时间,错误信息在源代码中的位置。函数参数传递的值,函数返回值程序执行流程。程序员或者测试人员可以根据提取出的信息快速准确的对程序的问题进行定位分析,找到错误原因,提高工作效率。

用户设置相应的参数对得到的源代码位置、程序执行流程、程序执行效率以及输出字段对应数值信息进行进一步的筛选,过滤掉不需要关注的信息。进一步上述几处进行筛选的过程可以都进行,也可以仅在一处进行筛选,本实施例对此并不进行限定。即用户可以在每一个步骤处自定义过滤条件。只关心某一个模块,某一个cpp文件或者某一个函数的执行情况,其他的日志信息被屏蔽。也可以运行完整的程序,得到完整的日志文件,统计出程序质量(程序错误数量,执行效率)。根据不同的适用场景输出到不同的目标上。

进一步,用户可以根据得到的源代码位置、程序执行流程、程序执行效率以及输出字段对应数值信息快速确定程序问题,节省用户从海量日志信息中筛选出有用信息的时间。进一步可以对分析得到的数据进行统计分析,得到对应程序的质量报告。这样程序员或者测试人员即可以通过质量报告得到程序出现bug的原因,进而可以快速做出相应的调整。进一步通过网络实时接收或者从本地文件读取到已保存的日志文件,根据预定的日志文件格式,分析日志。为了提高技术人员获取关键信息的效率或者不要遗漏关键信息,可以用不同的颜色或者提示,展示程序代码中的缺陷和bug。或者当错误码字段或错误信息字段存在对应数值信息时,按照预定路径发出报警信息。以便技术人员可以及时获取程序的错误信息,尽快对程序进行修正。

基于上述技术方案,本发明实施例提的日志分析方法,除了能够进行日志文件生成以外,还能对生成的日志文件进行分析,减轻了开发人员和测试人员的负担,智能化程度较高。在进行日志分析过程中,能够针对实际需求,进行日志文件过滤,筛选出符合自己要求的日志信息,具备很强的实用性。且能够对源程序的执行效率、执行流程、log等级、程序名、类名、函数名、代码行数、参数值、返回值、错误码和错误信息等都进行分析,功能多样全面,为后续程序问题的解决提供了有力的数据支撑,大大提高了开发人员和测试人员的工作效率,及时性可靠性都能够得到保证。

下面对本发明实施例提供的日志分析系统进行介绍,下文描述的日志分析系统与上文描述的日志分析方法可相互对应参照。

请参考图2,图2为本发明实施例所提供的一种日志分析系统的结构框图;该系统可以包括:

输出模块100,用于调用日志生成接口输出日志文件;

读取模块200,用于读取日志文件;

定位模块300,用于利用设定的函数标识定位程序对应的源代码位置;

第一信息获取模块400,用于根据源代码位置,利用函数进入标记和函数退出标记记录对应的程序执行流程,并读取函数执行耗时对应数值作为程序执行效率;

第二信息获取模块500,用于根据设定的输出字段,获取执行流程中输出字段对应数值信息。

基于上述实施例,读取模块200包括:

第一读取单元,用于利用操作系统应用程序编程接口将日志文件输出到程序编辑器的输出窗口;和/或,

第二读取单元,用于利用库函数将日志文件输出到本体日志文件;和/或,

第三读取单元,用于利用库函数将日志文件输出到控制台;和/或,

第四读取单元,用于利用tcp协议将日志文件输出到网络上的指定终端;和/或,

第五读取单元,用于利用串行通讯端口将日志文件输出到串口设备。

基于上述任意实施例,该系统还可以包括:

筛选模块,用于根据设定的筛选信息对输出的日志文件进行筛选。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的一种日志分析方法及系统进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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