一种日志存储的方法、装置、电子设备及可读存储介质与流程

文档序号:20838330发布日期:2020-05-22 17:09阅读:211来源:国知局
一种日志存储的方法、装置、电子设备及可读存储介质与流程

本发明实施例涉及计算机技术领域,特别涉及一种日志存储的方法、装置、电子设备及可读存储介质。



背景技术:

开发人员需要了解万维网(worldwideweb,简称“web”)应用在浏览器中运行异常状况,通常通过对前端埋点的方式采集前端异常日志并将采集的前端异常日志上报到日志服务器。有了前端异常日志帮助,开发人员能够快速准确定位系统异常发生原因及位置,提升错误的修复准确性与工作效率。而系统运行了一段时间后,会产生大量前端异常日志,给开发人员检索日志带来了很大困惑,无法准确寻找到发生问题对应的日志信息;针对这种情况,一般需要对日志做聚合处理。

发明人发现相关技术中至少存在如下问题:目前的前端异常日志聚合模型中,通常只从单一角度或片面解决日志信息聚合问题,例如,聚合死板,导致很多日志不能聚合;或者缺乏对各前端异常日志之间关系的分析,导致开发人员不能快速定位错误。



技术实现要素:

本发明实施方式的目的在于提供一种日志存储的方法、装置、电子设备及可读存储介质,使得可以快速从存储的日志中定位错误,提高错误定位的准确性以及提高定位效率。

为解决上述技术问题,本发明的实施方式提供了一种日志存储的方法,包括:获取异常日志数据,异常日志数据包括:在预设时间段内采集的第一异常日志;根据异常日志数据,确定与第一异常日志关联的关联日志;将第一异常日志存储在第一数据表,将关联日志存储在第二数据表,其中,第一数据表关联第二数据表。

本发明的实施方式还提供了一种日志存储的装置,包括:获取模块、确定模块和存储模块;获取模块用于获取异常日志数据,异常日志数据包括:在预设时间段内采集的第一异常日志;确定模块用于根据异常日志数据,确定与第一异常日志关联的关联日志;存储模块用于将第一异常日志存储在第一数据表,将关联日志存储在第二数据表,其中,第一数据表关联第二数据表。

本发明的实施方式还提供了一种电子设备,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述的日志存储的方法。

本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述日志存储的方法。

本发明实施方式相对于现有技术而言,根据获取的异常日志数据,确定与第一异常日志相关联的关联日志,将关联日志存储在第二数据表,将第一异常日志存储在第一数据表,且第一数据表和第二数据表相互关联,使得在查询异常日志过程中,不仅可以查询第一数据表中的第一异常日志,还可以通过第一数据表与第二数据表之间的关联关系查询与该第一异常日志的关联日志,由于某些错误在发生过程中往往与用户的操作存在关联关系,因而可以通过第二数据表查询关联日志,以丰富对错误定位的依据,提高快速错误定位的速度和效率;此外,由于分表存储,使得查询快速,提高查询效率。

另外,根据异常日志数据,确定与第一异常日志关联的关联日志,具体包括:提取第一异常日志中的用户操作信息以及错误信息;在第一数据表中查询与用户操作信息关联且与错误信息关联的异常日志;将查询到的异常日志作为与第一异常日志关联的关联日志。第一异常日志中包括用户操作信息以及错误信息,由于某些错误的发生通常与用户的操作相关,通过查询与用户的操作信息关联的异常日志,可以较为准确地确定出关联日志,或者,将与错误信息关联的异常日志作为关联日志,可以快速地确定出关联日志。

另外,在获取异常日志数据之后,日志存储的方法还包括:从第一异常日志中提取错误信息,实时构建第一异常日志的关键字模型;判断第三数据表中是否存在与第一异常日志的关键字模型相同的关键字模型,若确定存在,则更新第三数据表中关键字模型的汇总信息;若确定不存在,则将第一异常日志的关键字模型存储在第三数据表;其中,第三数据表关联第一数据表。构建关键字模型并存储关键字模型,将相同的关键字模型汇总,而第一数据表与第三数据表关联,使得还可以基于第一数据表,查询第三数据表中的关键字模型,有利于对相同错误问题的定位和分析。

另外,从第一异常日志中提取错误信息,实时构建第一异常日志的关键字模型,具体包括:根据提取的错误信息,计算第一异常日志的哈希值;将错误信息以及哈希值组合,构成关键字模型。通过计算第一异常日志的哈希值,由于哈希值是基于该第一异常日志的错误信息计算,可以有效表征该第一异常日志的异常特征,将错误信息和哈希值构建该关键字模型,使得后续可以根据哈希值快速查询属于相同错误的第一异常日志。

另外,判断第三数据表中是否存在与第一异常日志的关键字模型相同的关键字模型,具体包括:检测第三数据表中是否存在与第一异常日志的哈希值相同的关键字模型,若是存在,则确定第三数据表中存在与第一异常日志的关键字模型相同的关键字模型,否则,确定第三数据表中不存在与第一异常日志的关键字模型相同的关键字模型。由于每个第一异常日志的哈希值是固定的,因而可以通过在第三数据表中查找是否存在相同哈希值的关键字模型,若哈希值相同,则可以确定该第三数据表中存在与所述第一异常日志的关键字模型相同的关键字模型,另外由于第一数据表关联第二数据表,使得仅需要对第一数据表查询,即可实现对关键字模型的查询以及对关联日志的查询,从而快速查询相关日志,定位错误。

另外,关键字模型的汇总信息包括:关键字模型的被记录次数;更新第三数据表中关键字模型的汇总信息,具体包括:增加第三数据表中关键字模型的汇总信息中被记录次数。

另外,异常日志数据还包括:与第一异常日志关联的关联日志;根据异常日志数据,确定与第一异常日志关联的关联日志,具体包括:从异常日志数据中提取与第一异常日志关联的关联日志。异常日志数据中还包括关联日志,则可以直接对关联日志进行存储,加快存储异常日志和关联日志的速度。

附图说明

一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。

图1是根据本发明第一实施方式提供的一种日志存储的方法的具体流程示意图;

图2是根据本发明第二实施方式提供的一种日志存储的方法的具体流程示意图;

图3是根据本发明第三实施方式提供的一种日志存储的装置的具体结构示意图;

图4是根据本发明第四实施方式提供的一种电子设备的具体结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。

以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。

发明人发现目前业界对日志存储的方式有多种,例如,原因分类法、关键字搜索法和相同日志聚合方法;原因分类法是对日志产生的原因进行分类存储,开发人员根据原因分类来检索日志。关键字搜索法是对日志中的关键字(错误消息,堆栈信息等)进行检索,定位到准确日志记录;相同日志聚合方法是把相同结构体的日志聚合在一起存储,方便检索。

原因分类法需要业务或者技术端预定义分类的字典数据,在捕获日志时,把日志生产的原因加以准确的界定,并把此相关日志数据发送到日志服务器。但是当日志数据量变大以后,日志查找不方便,并且无法获取相关异常日志的信息。

关键字搜索法首先需要确定日志中的哪些字段作为关键字,对这些关键字加上相应的索引存储。在检索日志时,用户需要预知关键字,如果不知道关键字或关键字不准确则检索结果同样也不准确;另外关键字检索法也不能获知相关异常日志的之间的关联关系。

相同日志聚合法对相同的日志结构体进行了聚合存储操作,检索日志时可缩小访问范围。但是这种日志聚合条件限定太死,在不同场景产生的日志(日志参数可能就不会完全一致)无法聚合,另外相同日志聚合法也不能获知相关异常日志之间的关联关系。

以上三种方法均都只从单一角度或片面解决日志信息聚合问题,在日志聚合的过程中,日志聚合条件过于死板,在不同场景发生的异常日志,存在日志的参数不同,而无法聚合的问题;另外错误发生过程中,往往也与用户的操作信息相关,目前的日志存储,并不能查询相关异常日志,不利于后续检索,定位错误。

本发明的第一实施方式涉及一种日志存储的方法,该日志存储的方法应用于电子设备,例如,服务器。该日志存储的方法具体流程如图1所示。

步骤101:获取异常日志数据,异常日志数据包括:在预设时间段内采集的第一异常日志。

具体的说,可以由客户端通过埋点的方式,采集预设时间段内客户端产生的第一异常日志,得到异常日志数据。例如,由客户端采集第一异常日志,该客户端与服务器通信连接,客户端可以每隔预设时间段上传一次采集到的异常日志数据;其中,该异常日志数据可以包括一个或多个第一异常日志,每个第一异常日志可以包括:站点信息,出错页面url,源文件url,页面组件信息,错误类型,错误消息,出错文件行列数信息,堆栈信息,用户ip,用户操作信息,浏览器信息以及设备信息等。

步骤102:根据异常日志数据,确定与第一异常日志关联的关联日志。

在一个例子中,可以提取第一异常日志中的用户操作信息以及错误信息;在第一数据表中查询与用户操作信息关联且与错误信息关联的异常日志;将查询到的异常日志作为与第一异常日志关联的关联日志。

具体的说,提取第一异常日志中的用户操作信息以及错误信息,其中,用户操作信息可以是点击操作,滑动操作,输入操作等信息,错误信息可以包括:出错页面的统一资源定位符(uniformresourcelocator,简称“url”),错误类型,出错文件行列数信息以及堆栈信息等。由于第一数据表中存储有各种异常日志,可以在第一数据表中查询该表中是否存在与用户操作信息关联且与错误信息关联的异常日志。例如,将与该用户操作的时间相同的匹配异常日志,且与发生错误信息的时间匹配的异常日志作为关联日志。

在另一个例子中,若该异常日志数据还包括:与第一异常日志关联的关联日志,则可以直接从异常日志数据中提取与第一异常日志关联的关联日志。

具体的说,可以是客户端在采集了多个第一异常日志后,根据多个第一异常日志,分析每个第一异常日志中的用户操作信息和错误信息,确定出每个第一异常日志的关联日志,得到上传服务器的异常日志数据。获取到该异常日志数据后,服务器可以直接提取该异常日志数据中的关联日志,作为确定出的该第一异常日志的关联日志;该异常日志数据可以是客户端采集,由其他第三方服务器确定关联日志,得到该异常日志数据。

需要说明的是,若第一数据表中未查到与该第一异常日志相关联的关联日志,则直接将该第一异常日志存储在第一数据表中即可。

步骤103:将第一异常日志存储在第一数据表,将关联日志存储在第二数据表,其中,第一数据表关联第二数据表。

具体的说,第一数据表存储第一异常日志,第二数据表存储与第一异常日志关联的关联日志,该第一数据表关联第二数据表,关联的方式有多种,例如,可以在第一数据表中设置外键,该外键的数值为该第二数据表的主键。该第二数据表和第一数据表可以是同一个数据库,也可以分别放在两个不同的数据库中。

按照本实施方式中日志存储的方法存储日志后,在查询异常日志过程中,可以通过第一数据表与第二数据表之间的关联关系,查询与该第一异常日志关联的关联日志,通过关联日志以及第一异常日志,丰富了确定错误的数据,便于可以准确地定位错误的原因。

本发明实施方式相对于现有技术而言,根据获取的异常日志数据,确定与第一异常日志相关联的关联日志,将关联日志存储在第二数据表,将第一异常日志存储在第一数据表,且第一数据表和第二数据表相互关联,使得在查询异常日志过程中,不仅可以查询第一数据表中的第一异常日志,还可以通过第一数据表与第二数据表之间的关联关系查询与该第一异常日志的关联日志,由于某些错误在发生过程中往往与用户的操作存在关联关系,因而可以通过第二数据表查询关联日志,以丰富对错误定位的依据,提高快速错误定位的速度和效率;此外,由于分表存储,使得查询快速,提高查询效率。

第二实施方式涉及一种日志存储的方法,第二实施方式是对第一实施方式的进一步改进,主要改进之处在于:在本发明第二实施方式中,该日志存储的方法还包括:实时构建第一异常日志的关键字模型,对关键字模型进行存储。该日志存储的方法的具体流程可以如图2所示。

步骤201:获取异常日志数据,异常日志数据包括:在预设时间段内采集的第一异常日志。

步骤202:根据异常日志数据,确定与第一异常日志关联的关联日志。

步骤203:将第一异常日志存储在第一数据表,将关联日志存储在第二数据表,其中,第一数据表关联第二数据表。

步骤204:从第一异常日志中提取错误信息,实时构建第一异常日志的关键字模型。

在一个例子中,根据提取的错误信息,计算第一异常日志的哈希值;将错误信息以及哈希值组合,构成关键字模型。

具体的说,错误信息可以包括:出错页面的url,错误类型,出错文件行列数信息以及堆栈信息等。可以利用该错误信息中的有效字段,例如,出错页面的堆栈信息、出错行列数等,进行哈希计算,得到该第一异常日志的哈希值,具体的计算过程不在进行赘述,该哈希值可以有效表征该第一异常日志的特征信息,因此可以基于该哈希值以及错误信息构建关键字模型,例如,构建以该错误信息为数值的结构体,将该结构体作为该关键字模型,该结构体中可以存储该关键字模型的哈希值,而该结构体的主键可以是自动生成的对应标识信息。

步骤205:判断第三数据表中是否存在与第一异常日志的关键字模型相同的关键字模型,若确定存在,则执行步骤206;若确定不存在,则执行步骤207。其中,该第三数据表关联第一数据表。

在一个例子中,第一数据表的外键设置为第三数据表的主键,第三数据表中每个主键为存储的各结构体的标识信息,如:id号,每个结构体包括:第一异常日志的哈希值、关键字模型以及该关键字模型的汇总信息。判断第三数据表中是否存在与第一异常日志的关键字模型相同的关键字模型的过程具体可以为:检测第三数据表中是否存在与第一异常日志的哈希值相同的关键字模型,若是,则确定第三数据表中存在与第一异常日志的关键字模型相同的关键字模型,否则,确定第三数据表中不存在与第一异常日志的关键字模型相同的关键字模型。

具体的说,该第一数据表和第三数据表关联,第三数据表的主键为每个结构体的标识信息,每个结构体包括:第一异常日志的哈希值、该第一异常日志的关键字模型,以及每个关键字模型的汇总信息,其中,每个关键字模型的汇总信息为该关键字模型的被记录次数。例如,第一数据表中主键key1为存储的第一异常日志a1的id号,key1对应的数值value1为该第一异常日志a1以及该第一异常日志的哈希值h1;该主键key1的外键为第三数据表的主键,该在第三数据表中,主键为d3,与该主键d3对应的数值value为该第一异常日志a1的关键字模型、该第一异常日志的哈希值h1以及该关键字模型的汇总信息。

可以理解的是,由于第一数据表和第三数据表关联,可以通过对第一数据表中外键以及对应的哈希值,查询第三数据表中相同哈希值的关键字模型,查询速度快。

步骤206:更新第三数据表中关键字模型的汇总信息。

具体的说,关键字模型的汇总信息包括:关键字模型的被记录次数。若确定第三数据表中存在与该第一异常日志的关键字模型相同的关键字模型,则可以增加第三数据表中关键字模型的汇总信息中被记录次数;例如,若确定第三数据表中存在与该第一异常日志的关键字模型相同的关键字模型,则将第三数据表中的该关键字模型的汇总信息中被记录次数加1。

步骤207:将第一异常日志的关键字模型存储在第三数据表。

若确定第三数据表中不存在与第一异常日志的关键字模型相同的关键字模型,则可以直接将该第一异常日志的关键字模型存储在该第三数据表中。

本实施方式中的日志存储的方法,通过记录具有相同哈希值的关键字模型,有利于快速查询属于相同哈希值的同类异常日志,使得错误的定位更加准确。另外,由于第一数据表还与第二数据表关联,使得还可以查询与第一异常日志关联的关联日志,进一步丰富了用于分析错误的资源,提高对错误定位的准确性。

上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。

本发明第三实施方式涉及一种日志存储的装置30,该日志存储的装置30的具体结构如图3所示,包括:获取模块301、确定模块302和存储模块303。

获取模块301用于获取异常日志数据,异常日志数据包括:在预设时间段内采集的第一异常日志;确定模块302用于根据异常日志数据,确定与第一异常日志关联的关联日志;存储模块303用于将第一异常日志存储在第一数据表,将关联日志存储在第二数据表,其中,第一数据表关联第二数据表。

不难发现,本实施方式为与第一实施方式相对应的装置实施例,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。

值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。

本发明第四实施方式涉及一种电子设备,该电子设备40的具体结构可以如图4所示,包括:至少一个处理器401;以及,与至少一个处理器401通信连接的存储器402;其中,存储器402存储有可被至少一个处理器401执行的指令,指令被至少一个处理器401执行,以使至少一个处理器401能够执行如第一实施方式或第二实施方式中的日志存储的方法。

其中,存储器402和处理器401采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器401和存储器402的各种电路链接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器401处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器401。

处理器401负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器402可以被用于存储处理器在执行操作时所使用的数据。

本发明第五实施方式涉及一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现第一实施方式或第二实施方式中的日志存储的方法。

本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

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