一种日志读取方法和装置与流程

文档序号:14860858发布日期:2018-07-04 07:19阅读:195来源:国知局
一种日志读取方法和装置与流程

本发明涉及日志处理技术领域,特别是涉及一种日志读取方法和装置。



背景技术:

由于代码漏洞或者服务器自身性能的限制,服务器在运行过程中会出现响应请求时间长、无法响应请求等异常情况。服务器可以将异常情况下运行的记录写入日志中,日志中通常包含多条记录。当技术人员需要对异常进行修复时,可以利用flume等工具读取服务器的日志,以根据读取到的记录对异常进行修复。

然而,发明人在实现本发明的过程中发现,现有技术至少存在如下问题:

flume等工具在读取日志时,由于断电或其他异常情况,会导致日志读取中断。当再次读取日志时,往往会重复读取之前已读取的记录,进而使得日志读取的效率低。



技术实现要素:

本发明实施例的目的在于提供一种日志读取方法、装置、电子设备及计算机可读存储介质,以提高日志读取的效率。具体技术方案如下:

第一方面,为了达到上述目的,本发明实施例公开了一种日志读取方法,上述方法包括:

获取预先存储的读取位置信息,其中,所述读取位置信息包含目标日志中读取时间与当前时刻最接近的记录的标识;

根据所述读取位置信息,读取所述目标日志中的第一记录,生成所述第一记录的第一标识;

根据所述第一标识,更新所述读取位置信息。

可选的,在所述读取所述目标日志中的第一记录之后,所述方法还包括:

判断所述第一记录是否满足预设的异常条件;

如果所述第一记录满足预设的异常条件,将所述第一记录确定为异常记录。

可选的,所述方法还包括:

根据预设的异常类型,对确定出的异常记录进行分类;

根据分类结果,获得每一所述异常类型包含所述异常记录的数目。

可选的,在所述获得每一异常类型包含所述异常记录的数目之后,所述方法还包括:

将所述异常记录和每一所述异常类型包含所述异常记录的数目存储在预设的数据库中。

可选的,在所述获得每一所述异常类型包含所述异常记录的数目之后,所述方法还包括:

当达到预设的周期时,将所述异常记录和每一所述异常类型包含所述异常记录的数目发送至预设的用户终端。

第二方面,为达到上述目的,本发明实施例公开了一种日志读取装置,上述装置包括:

获取模块,用于获取预先存储的读取位置信息,其中,所述读取位置信息包含目标日志中读取时间与当前时刻最接近的记录的标识;

生成模块,用于根据所述读取位置信息,读取所述目标日志中的第一记录,生成所述第一记录的第一标识;

更新模块,用于根据所述第一标识,更新所述读取位置信息。

可选的,所述装置还包括:

确定模块,用于判断所述第一记录是否满足预设的异常条件;

如果所述第一记录满足预设的异常条件,将所述第一记录确定为异常记录。

可选的,所述装置还包括:

分类模块,用于根据预设的异常类型,对确定出的异常记录进行分类;

根据分类结果,获得每一所述异常类型包含所述异常记录的数目。

可选的,所述装置还包括:

存储模块,用于将所述异常记录和每一所述异常类型包含所述异常记录的数目存储在预设的数据库中。

可选的,所述装置还包括:

发送模块,用于当达到预设的周期时,将所述异常记录和每一所述异常类型包含所述异常记录的数目发送至预设的用户终端。

在本发明实施的另一方面,为了达到上述目的,本发明实施例还公开了一种电子设备,所述电子设备包括处理器、通信接口、存储器和通信总线,其中,所述处理器,所述通信接口,所述存储器通过所述通信总线完成相互间的通信;

所述存储器,用于存放计算机程序;

所述处理器,用于执行所述存储器上所存放的程序时,实现如上述第一方面所述的日志读取方法。

在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,实现如上述第一方面所述的日志读取方法。

在本发明实施的又一方面,本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的日志读取方法。

本发明实施例提供的日志读取方法、装置、电子设备及计算机可读存储介质,可以获取预先存储的读取位置信息,根据读取位置信息,读取目标日志中的第一记录,生成第一记录的第一标识,根据第一标识,更新读取位置信息。基于上述处理,可以根据读取位置信息读取目标日志。在每次读取到目标日志中的记录后,都会更新读取位置信息,能够避免重复读取记录,进而提高日志读取的效率。

当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。

图1为本发明实施例提供的一种日志读取系统流程图;

图2为本发明实施例提供的一种日志读取方法的流程图;

图3为本发明实施例提供的一种日志读取装置的结构图;

图4为本发明实施例提供的一种电子设备的结构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。

通常由于断电或其他异常情况,会导致日志读取中断。现有技术中,当再次读取日志时,往往会重复读取日志中之前已读取的记录,导致重复读取,进而使得日志读取的效率低。

本发明申请提供了一种日志读取方法、装置、电子设备及计算机可读存储介质,上述方法可以应用于终端,也可以应用于服务器,本发明申请以上述方法应用于终端为例进行说明,其他情况与之类似。终端可以获取预先存储的读取位置信息,根据读取位置信息,读取目标日志中的第一记录,生成第一记录的第一标识。然后,终端可以根据第一标识,更新读取位置信息。基于上述处理,终端可以根据读取位置信息读取目标日志。在每次读取记录后,终端都会更新读取位置信息,能够避免重复读取记录,进而提高日志读取的效率。

下面以具体实施对本发明申请进行详细介绍。

参见图1,图1为本发明实施例提供的一种日志读取系统流程图,包括:

s101:获取待读取的目标日志。

在实施中,当用户需要读取目标日志时,可以向终端输入设置指令,设置指令中可以携带有预设的目标日志的类型标识。终端可以根据预设的目标日志的类型标识,获取该类型的待读取的目标日志。其中,目标日志可以为一个,也可以为多个;目标日志可以为服务器的错误日志、访问日志、传输日志和cookie日志。

s102:对目标日志进行切割、读取,以及存储异常记录。

在实施中,用户向终端输入的设置指令中还可以携带有终端读取目标日志的方式,以及异常记录的标识。终端可以根据设置指令中的读取日志的方式对目标日志进行切割,示例性的,终端可以以天为周期对目标日志进行切割,得到每天的目标日志。终端也可以根据设置指令中的异常记录的标识,对目标日志进行读取,得到异常记录,并将获得的异常记录存储在本地。其中,终端每次对目标日志进行读取时,可以根据上一次读取得到的最后一条异常记录,确定目标日志中本次需要进行读取的第一条记录。

s103:提供查询界面以及邮件报警机制。

在实施中,终端可以提供查询界面,以供用户查询获得的异常记录的信息,其中,异常记录的信息可以包括异常记录对应的时间和异常类型;终端还可以提供邮件报警机制。当读取到某一异常类型的异常记录时,终端可以将该异常记录的信息以邮件的方式发送至预设的用户邮箱。或者,终端也可以在预设的报警周期,将读取到的所有异常记录的信息以邮件的方式发送至预设的用户邮箱。

具体的,上述s102中对目标日志进行读取的步骤可以参见图2,图2为本发明实施例提供的一种日志读取方法的流程图,包括:

s201:获取预先存储的读取位置信息。

其中,读取位置信息可以包含目标日志中读取时间与当前时刻最接近的记录的标识。目标日志中通常会包含大量记录,终端每次读取目标日志时,可以存储读取到的记录的标识。终端可以获取上一次读取结束时读取到的最后一条记录的标识。读取位置信息可以存储在终端本地,也可以存储在服务器中。记录的标识可以是服务器预先生成的,针对每一条记录,服务器可以根据将该记录写入目标日志的时间生成该记录的标识;也可以为该记录生成对应的uuid(universallyuniqueidentifier,通用唯一识别码),将该记录对应的uuid作为该记录的标识。另外,记录的标识也可以是终端在读取该记录时为该记录生成的,具体的,可以参考上述服务器生成记录的标识的步骤。

在实施中,终端可以读取服务器的目标日志,以获得目标日志中的记录。具体的,终端可以在读取目标日志中的每一条记录时,记录读取该记录的时间。其中,服务器的目标日志中的记录可以按照写入时间的先后顺序排列,当终端读取目标日志时,可以按照上述写入时间的顺序逐条读取。终端可以从服务器中获取预先存储的读取位置信息,也可以从终端本地获取预先存储的读取位置信息,以确定本次需要读取的记录。

s202:根据读取位置信息,读取目标日志中的第一记录,生成第一记录的第一标识。

在实施中,终端可以获取当前时刻读取位置信息中的记录的标识,根据该记录的标识,确定在当前时刻之前已读取的最后一条记录。然后,终端可以按照上述写入时间的顺序,确定下一条待读取的记录(第一记录),也即本次需要读取的记录。终端可以读取第一记录,并生成第一记录的标识(即第一标识)。具体的,可以参考上述s201中的步骤。针对每一记录,在目标日志中,该记录可以以一行显示,也可以以多行显示。例如,对于java异常的stacktrace(栈轨迹),一条记录通常会以多行显示。终端可以从某一条记录的起始行开始读取,直到读取到下一条记录的起始行,将读取到的所有行数据作为该条记录。

s203:根据第一标识,更新读取位置信息。

在实施中,终端可以将当前时刻的读取位置信息中的标识更新为第一标识,以实现读取位置信息的更新,并可以将更新后的读取位置信息存储到服务器中,也可以将更新后的读取位置信息存储在终端本地。

由上述可见,基于本发明实施的日志读取方法,终端可以根据读取位置信息读取目标日志。在读取目标日志中的每一条记录后,终端都会更新读取位置信息,能够避免重复读取记录,进而提高日志读取的效率。

可选的,终端还可以确定出目标日志中的异常记录。具体的,在读取目标日志中的第一记录之后,上述方法还可以包括:

判断第一记录是否满足预设的异常条件,如果第一记录满足预设的异常条件,将所述第一记录确定为异常记录,如果第一记录不满足预设的异常条件,则不做任何处理。

其中,预设的异常条件可以由技术人员根据经验进行设置。目标日志中通常可以包含服务器运行的记录,运行的记录可以包括服务器正常运行的记录和服务器异常运行的记录。异常运行的记录通常可以包含异常的时间和异常类的类名,因此,预设的异常条件可以根据预设的异常类的类名进行设置得到。具体的,异常类通常可以包括非运行异常类non_runtimeexception及其子类,例如,输入/输出异常ioexception、sql异常sqlexception以及用户自定义的异常。

在实施中,终端可以根据正则匹配的方式,利用预设的异常格式进行匹配。如果第一记录中包含预设的异常类的类名,终端可以将第一记录确定为异常记录。

另外,对于nginx日志,终端可以根据nginx日志中的每一条记录中包含的url(uniformresourcelocator,统一资源定位符)的请求时间和响应时间,确定服务器响应该url的响应时长。技术人员可以根据响应时长确定异常条件。具体的,如果服务器响应某一url的响应时长大于预设时长,终端可以将该url所属的记录确定为异常记录。其中,预设的时长可以由技术人员根据经验进行设置。

由上述可见,基于本发明实施例的日志读取方法,终端可以确定出异常记录,以使得技术人员可以根据异常记录进行异常修复,提高用户体验。

可选的,还可以实现终端对异常记录进行分类和统计。具体的,上述方法还可以包括:根据预设的异常类型,对确定出的异常记录进行分类。根据分类结果,获得每一异常类型包含异常记录的数目。

其中,预设的异常类型可以包括服务器无响应、服务器响应超时和访问页面丢失。

在实施中,针对每一异常记录,终端可以根据该异常记录的信息,确定该异常记录所属的异常类型,以完成该异常记录的分类。根据分类结果,针对每一异常类型,终端可以确定属于该异常类型的异常记录的数目。

由上述可见,基于本发明实施例的日志读取方法,终端可以确定每一异常类型包含异常记录的数目。基于上述处理,有利于技术人员根据上述数目对服务器的异常记录进行统计分析,提高用户体验。

可选的,还可以实现终端将异常信息存储在数据库中。具体的,在获得每一异常类型包含异常记录的数目之后,上述方法还可以包括:

将所述异常记录和每一所述异常类型包含所述异常记录的数目存储在预设的数据库中。

其中,预设的数据库可以由技术人员根据经验确定,可以是mysql数据库。

在实施中,终端可以将异常记录和每一异常类型包含异常记录的数目存储在数据库中。具体的,终端可以将不同异常类型的异常记录存储在数据库的不同的数据表中,可以在某一数据表中记录该数据表包含的异常记录的数目;终端也可以将读取到的异常记录按照预设的读取时间段进行划分,将不同读取时间段内读取到的异常记录存储在不同的数据表中,并在该数据表中记录该数据库包含的异常记录的数目。

由上述可见,基于本发明实施例的日志读取方法,终端可以将异常记录和每一异常类型包含异常记录的数目存储在数据库中。基于上述处理,能够方便用户查询服务器的异常记录,提高用户体验。

可选的,还可以实现终端将读取结果提供给用户。具体的,上述方法还可以包括:

当达到预设的周期时,将异常记录和每一异常类型包含异常记录的数目发送至预设的用户终端。

其中,预设的周期可以由技术人员根据经验进行设置。当达到预设的周期时,终端可以将该周期内读取到的异常记录,和每一异常类型包含该周期内读取到的异常记录的数目发送至用户终端。示例性的,在每天的某一固定时刻,终端可以将当天读取到的异常记录,和每一异常类型包含当天读取到的异常记录的数目发送至用户终端,以使用户终端将上述信息显示给用户。

由上述可见,基于本发明实施例的日志读取方法,终端可以将异常记录和每一异常类型包含异常记录的数目发送至预设的用户终端,方便用户浏览服务器的异常记录,能够提高用户体验。

与上述方法实施例相对应,参见图3,图3为本发明实施例提供的一种日志读取装置的结构图,包括:

获取模块301,用于获取预先存储的读取位置信息,其中,所述读取位置信息包含目标日志中读取时间与当前时刻最接近的记录的标识;

生成模块302,用于根据所述读取位置信息,读取所述目标日志中的第一记录,生成所述第一记录的第一标识;

更新模块303,用于根据所述第一标识,更新所述读取位置信息。

可选的,所述装置还可以包括:

确定模块,用于判断所述第一记录是否满足预设的异常条件;

如果所述第一记录满足预设的异常条件,将所述第一记录确定为异常记录。

可选的,所述装置还可以包括:

分类模块,用于根据预设的异常类型,对确定出的异常记录进行分类;

根据分类结果,获得每一所述异常类型包含所述异常记录的数目。

可选的,所述装置还可以包括:

存储模块,用于将所述异常记录和每一所述异常类型包含所述异常记录的数目存储在数据库中。

可选的,所述装置还可以包括:

发送模块,用于当达到预设的周期时,将所述异常记录和每一所述异常类型包含所述异常记录的数目发送至预设的用户终端。

本发明实施例还提供了一种电子设备,如图4所示,包括处理器401、通信接口402、存储器403和通信总线404,其中,处理器401,通信接口402,存储器403通过通信总线404完成相互间的通信,

存储器403,用于存放计算机程序;

处理器401,用于执行存储器403上所存放的程序时,实现如下步骤:

获取预先存储的读取位置信息,其中,所述读取位置信息包含目标日志中读取时间与当前时刻最接近的记录的标识;

根据所述读取位置信息,读取所述目标日志中的第一记录,生成所述第一记录的第一标识;

根据所述第一标识,更新所述读取位置信息。

上述电子设备提到的通信总线404可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该通信总线404可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口402用于上述电子设备与其他设备之间的通信。

存储器403可以包括随机存取存储器(randomaccessmemory,简称ram),也可以包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。可选的,存储器403还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器401可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

本发明实施例提供的电子设备,可以根据读取位置信息读取目标日志。在每次读取到目标日志中的记录后,都会更新读取位置信息,能够避免重复读取记录,进而提高日志读取的效率。

本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行本发明实施例提供的日志读取方法。

具体的,上述日志读取方法,包括:

获取预先存储的读取位置信息,其中,所述读取位置信息包含目标日志中读取时间与当前时刻最接近的记录的标识;

根据所述读取位置信息,读取所述目标日志中的第一记录,生成所述第一记录的第一标识;

根据所述第一标识,更新所述读取位置信息。

需要说明的是,上述日志读取方法的其他实现方式与前述方法实施例部分相同,这里不再赘述。

通过运行本发明实施例提供的计算机可读存储介质中存储的指令,可以根据读取位置信息读取目标日志。在每次读取到目标日志中的记录后,都会更新读取位置信息,能够避免重复读取记录,进而提高日志读取的效率。

本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行本发明实施例提供的日志读取方法。

具体的,上述日志读取方法,包括:

获取预先存储的读取位置信息,其中,所述读取位置信息包含目标日志中读取时间与当前时刻最接近的记录的标识;

根据所述读取位置信息,读取所述目标日志中的第一记录,生成所述第一记录的第一标识;

根据所述第一标识,更新所述读取位置信息。

需要说明的是,上述日志读取方法的其他实现方式与前述方法实施例部分相同,这里不再赘述。

通过运行本发明实施例提供的计算机程序产品,可以根据读取位置信息读取目标日志。在每次读取到目标日志中的记录后,都会更新读取位置信息,能够避免重复读取记录,进而提高日志读取的效率。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质、计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

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