一种日志校验方法、装置和产品与流程

文档序号:33627027发布日期:2023-03-28 21:32阅读:66来源:国知局
一种日志校验方法、装置和产品与流程

1.本发明涉及it与软件开发技术领域,特别是一种日志校验方法、装置和产品。


背景技术:

2.目前,在自动化测试中,存在大量的校验环节,而日志字段校验是众多校验环节中非常重要的一部分,因为大部分功能的有效性都是通过日志表现出来的,并且后续的计费、运维、故障排查等操作都需要日志支撑。常见的访问日志、回源日志等日志文件中包含了大量的日志字段,例如,网关访问日志有一百多个字段,回源日志有数十个字段。日志文件中的每个字段对应不同的业务功能,有着极其重要的意义,在自动化测试的过程中,基本会涉及到对所有字段的校验。
3.然而,对于日志文件中的每个待校验的字段,需要单独编写对应的校验脚本,这就导致了校验脚本编写过于繁琐,耗费大量人力资源,且日志校验效率不高。因此,有必要开发一种日志校验方法、装置和产品,以提高日志校验效率。


技术实现要素:

4.鉴于上述问题,本发明实施例提供了一种日志校验方法、装置和产品,以便克服上述问题或者至少部分地解决上述问题。
5.本发明实施例的第一方面,提供了一种日志校验方法,包括:获取目标日志校验请求;根据所述目标日志校验请求获取预先存储在独立日志格式库中的目标日志格式,所述独立日志格式库中存储有多个日志文件的初始化格式文件;根据所述目标日志格式,获取待校验字段和所述待校验字段的字段值;对所述待校验字段和所述字段值进行校验,得到目标日志的校验结果。
6.可选地,根据所述目标日志格式,获取待校验字段和所述待校验字段的字段值,包括:根据所述目标日志格式,获取所述待校验字段的位置信息;根据所述位置信息,从所述目标日志中提取所述待校验字段;根据所述待校验字段,确定所述待校验字段的字段值。
7.可选地,对所述待校验字段和所述字段值进行校验,包括:根据所述目标日志格式,确定所述待校验字段的期望值;根据所述目标日志校验请求,确定校验函数,所述校验函数包括多字段校验函数、单字段校验函数和正则校验函数;利用所述期望值,按照确定的所述校验函数,对所述待校验字段和所述字段值进行校验。
8.可选地,在所述校验函数为单字段校验函数的情况下,按照确定的所述校验函数,对所述待校验字段和所述字段值进行校验,包括:
根据所述目标日志校验请求,确定校验规则为精确匹配规则或模糊匹配规则;按照确定出的所述校验规则,将所述待校验字段和所述字段值作为两个独立的参数,利用所述单字段校验函数分别进行校验。
9.可选地,在所述校验函数为多字段校验函数的情况下,按照确定的所述校验函数,对所述待校验字段和所述字段值进行校验,包括:根据所述目标日志校验请求,确定校验规则为精确匹配规则或模糊匹配规则;按照确定出的所述校验规则,将每个所述待校验字段和对应的所述字段值作为一个字符串,利用所述多字段校验函数对所述字符串逐个进行校验。
10.可选地,在所述校验方法为多字段校验函数的情况下,按照确定的所述校验函数,对所述待校验字段和所述字段值进行校验,还包括:将所述期望值按照指定分隔符拆分为第一期望值和第二期望值;在所述第二期望值为空的情况下,只利用所述第一期望值,对所述字段值进行校验;在所述第二期望值不为空的情况下,利用所述第一期望值和所述第二期望值与所述字段值做范围校验。
11.可选地,所述方法还包括:获取更新后的日志格式;根据所述更新后的日志格式,对所述独立日志格式库中对应的所述初始化格式文件进行更新。
12.本实施例第二方面提供了一种日志校验装置,所述装置包括:独立日志格式库,用于存储多个日志文件的初始化格式文件;数据处理模块,用于获取目标日志校验请求,根据所述目标日志校验请求获取目标日志格式,根据所述目标日志格式获取待校验字段和所述待校验字段的字段值;内容校验模块,用于对所述数据处理模块中获取的所述待校验字段和所述字段值进行校验,得到目标日志的校验结果。
13.可选地,所述数据处理模块包括:位置信息获取子模块,用于根据所述目标日志格式,获取所述待校验字段的位置信息;字段提取子模块,用于根据所述位置信息,从所述目标日志中提取所述待校验字段;字段值确定子模块,用于根据所述待校验字段,确定所述待校验字段的字段值。
14.可选地,所述内容校验模块,包括:期望值确定子模块,用于根据所述目标日志格式,确定所述待校验字段的期望值;校验函数和确定子模块,用于根据所述目标日志校验请求,确定校验函数,所述校验函数包括多字段校验函数、单字段校验函数和正则校验函数;校验子模块,用于利用所述期望值,按照确定的所述校验函数,对所述待校验字段和所述字段值进行校验。
15.可选地,所述校验子模块,包括:匹配规则确定单元,用于根据所述目标日志校验请求,确定校验规则为精确匹配
规则或模糊匹配规则;单字段函数校验单元,用于按照确定出的所述校验规则,将所述待校验字段和所述字段值作为两个独立的参数,利用所述单字段校验函数分别进行校验。
16.可选地,所述校验子模块,包括:规则确定单元,用于根据所述目标日志校验请求,确定校验规则为精确匹配规则或模糊匹配规则;多字段函数校验单元,用于按照确定出的所述校验规则,将所述待校验字段和所述字段值作为两个独立的参数,利用所述多字段校验函数分别进行校验。
17.可选地,所述校验子模块,还包括:期望值拆分单元,用于将所述期望值按照指定分隔符拆分为第一期望值和第二期望值;第一字段值校验单元,用于在所述第二期望值为空的情况下,只利用所述第一期望值,对所述字段值进行校验;第二字段值校验单元,用于在所述第二期望值不为空的情况下,利用所述第一期望值和所述第二期望值与所述字段值做范围校验。
18.可选地,所述装置还包括:更新信息获取模块,用于获取更新后的日志格式;更新模块,用于根据所述更新后的日志格式,对所述独立日志格式库中对应的所述初始化格式文件进行更新。
19.本实施例第三方面还提供了一种日志校验系统,所述系统包括:请求获取模块,用于获取目标日志校验请求;格式获取模块,用于根据所述校验请求获取预先存储在独立日志格式库中的目标日志格式,所述独立日志格式库中存储有多个日志文件的初始化格式文件;字段获取模块,用于根据所述目标日志格式,获取待校验字段和所述待校验字段的字段值;校验模块,用于对所述待校验字段和所述字段值进行校验,得到目标日志的校验结果。
20.本发明实施例第四方面提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行时实现本发明第一方面所述的日志校验方法中的步骤。
21.本发明实施例第五方面提供了一种计算机可读存储介质,其上存储有计算机程序/指令,该计算机程序/指令被处理器执行时实现本发明第一方面所述的日志校验方法中的步骤。
22.本发明实施例第六方面提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现本发明第一方面所述的日志校验方法中的步骤。
23.本发明实施例提供了一种日志校验方法、装置和产品,该方法包括:获取目标日志校验请求;根据所述校验请求获取预先存储在独立日志格式库中的目标日志格式,所述独立日志格式库中存储有多个日志文件的初始化格式文件;根据所述目标日志格式,获取待校验字段和所述待校验字段的字段值;对所述待校验字段和所述字段值进行校验,得到目
标日志的校验结果。由此,本发明实施例通过预先将多个日志的初始化格式文件存储在独立日志格式库中,在进行校验时,直接获取对应的目标日志格式,从中得到需要的格式信息,从而确定出待校验字段和待校验字段的字段值,完成日志校验。本发明实施例不需要在校验脚本中编写目标日志的格式信息或待校验字段的位置信息,简化了校验脚本,提高了校验效率。
附图说明
24.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
25.图1是本发明实施例提供的一种日志校验方法的步骤流程图;图2是本发明实施例提供的一种常规的脚本修改方法示意图;图3是本发明实施例提供的一种日志校验方法流程示意图;图4是本发明实施例提供的一种日志校验装置的结构示意图;图5是本发明实施例提供的一种日志校验系统的结构示意图;图6是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
26.下面将结合本发明实施例中的附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
27.本发明实施例提供了一种日志校验方法,参照图1,图1为本发明实施例提供的一种日志校验方法的步骤流程图,如图1所示,所述方法包括:步骤s101,获取目标日志校验请求;在本实施例中,目标日志校验请求中包括待校验的目标日志的相关信息,如目标日志的类型,所需要校验的字段等信息。或者,该目标日志校验请求中包括待校验日志或待校验日志的访问路径。
28.步骤s102,根据所述目标日志校验请求获取预先存储在独立日志格式库中的目标日志格式,所述独立日志格式库中存储有多个日志文件的初始化格式文件。
29.在本实施例中,该独立日志格式库中存储有多个日志文件的初始化格式文件,独立日志格式库可以为任一具备数据存储和读取功能的数据库。本实施例人为地将自动化测试所涉及到的各类日志文件的初始化格式存储在该独立日志格式库中,其中日志文件可以包括访问日志、回源日志等各类日志文件。初始化格式表示该日志文件的全部格式信息,包括该日志文件所包含的所有字段的格式信息,例如各个字段的位置信息和该字段的期望值信息,即该字段在该日志文件中所处的位置和该字段的字段值。示例性的,“status”字段,在访问日志中位于第50个位置,且“status”的字段值或期望值为3。
30.根据目标日志校验请求获取预先存储在独立日志格式库中的目标日志格式,具体
的,可以根据该目标日志校验请求中的待校验的目标日志的相关信息,从独立日志格式库中找到对应的目标日志的初始化格式文件,将其作为目标日志格式。
31.步骤s103,根据所述目标日志格式,获取待校验字段和所述待校验字段的字段值。
32.对日志文件的校验,一般是指对该日志文件中的字段的校验,即,校验该字段是否在该日志中的特定位置,字段值是否符合规定的期望值。具体的,在日志中,一行表示一条完整的信息,一行中具有一个或多个列,每列都有其对应的类型、长度和存储的值,该值则表示字段值。现有的日志校验方法中,需要在校验脚本(robot脚本)中预先编写出待校验的日志的格式信息,其中包括待校验字段的位置信息,然后编写该字段的期望值信息,再编写对提取出的待校验字段的校验过程。然而此类方法,每个字段提取都需要写awk提取脚本,即对每一个字段的校验,就需要如此编写一个完整的脚本进行封装,校验一个字段最少需要两行脚本,导致重复脚本过多。并且,一旦日志发生一点细微的变化,就可能影响到校验脚本的内容,需要对校验脚本进行对应的改写,降低了校验效率。
33.本实施例通过预先存储各个日志文件的格式,在需要进行日志校验时,直接从中选择出对应的格式文件(目标日志格式),根据该格式文件获取到目标字段的位置信息,根据该位置信息从日志中提取出对应的字段(待校验字段)。按照现有技术的校验方法,对一个字段进行校验时,至少需要编写两行脚本,第一行脚本用于在日志中提取出该字段,其中包括日志的信息、字段的信息以及字段在该日志中的位置信息,期望值信息等;第二行脚本用于对提取出的字段进行校验,即判断该字段的字段值是否符合期望值。按照本实施例所提出的校验方法,不需要在脚本中编写字段的位置信息,可以直接根据获取到的目标日志格式,提取得到待校验字段,由此,解决了日志字段较多时,校验脚本行数过多,且脚本中大部分为重复指令的问题,简化了校验脚本的编写,实现了在进行相同数量的日志字段校验时,脚本行数减少一半以上,提高了校验效率。
34.在一种实施例中,根据所述目标日志格式,获取待校验字段和所述待校验字段的字段值,包括:根据所述目标日志格式,获取所述待校验字段的位置信息;根据所述位置信息,从所述目标日志中提取所述待校验字段;根据所述待校验字段,确定所述待校验字段的字段值。
35.在本实施例中,目标日志校验请求中包括待校验的日志的信息,其中包括待校验字段的信息(该信息可以为对应的指定字段变量,如time、status等),根据请求中的待校验字段的信息,从目标日志格式中确定出该字段的位置信息,例如,time字段位于该目标日志中的第50个字段。然后按照该位置信息,从目标日志中提取待校验字段,例如,从待校验日志中提取位于第50个字段位置的字段,然后确定出该字段的真实的字段值。示例性的,根据目标日志校验请求,可以知道,需要对日志a的time字段进行校验,然后根据对应的格式文件,确定出time字段位于日志a的第50个字段位置,由此,提取出日志a的第50个字段,并确定出该字段的字段值为3。
36.本实施例根据获取到的目标日志格式,可以获取待校验字段的位置信息,根据待校验字段的位置信息,从目标日志中提取出对应的待校验字段,从而得到该目标日志中这一待校验字段真实的字段值。如此,本实施例避免了在校验脚本中编写待校验字段的位置,若该待校验字段的位置发生变更,也不需要对校验脚本进行更改,简化了校验脚本的编写,
便于后期维护。
37.步骤s104,对所述待校验字段和所述字段值进行校验,得到目标日志的校验结果。
38.对目标日志的校验内容,主要有两方面,一方面是校验待校验字段是否在该日志的特定位置,本实施例通过比较提取出的待校验字段与校验请求中所规定的要校验的字段是否相同,如果相同则说明该日志中的这一字段的所在位置是正确的,如果不同,则说明该字段不在格式所规定的位置,或该日志中不包括该字段;另一方面是看该字段的字段值是否符合规定的期望值,本实施例通过比较提取出的待校验字段的字段值是否符合格式中所规定的期望值,若两者相同则表示该字段的字段值正确,日志没有问题,可以输出校验成功结果,若两者不同,则表示提取得到的待校验字段的字段值有误,日志存在错误,可以输出日志校验失败结果。具体的,可以先对所述待校验字段进行校验,若校验成功说明该字段的位置信息正确,再对字段值进行校验,若待校验字段校验失败,则说明该待校验字段的位置不正确,没有必要再进行后续的字段值校验,从而提高校验效率。此外,在生成目标日志的校验结果时,该校验结果可以包括待校验字段的关键词、提取得到的字段值等信息,若校验失败,可以根据校验结果分析得到目标日志的问题,例如校验失败的原因为字段位置错误或字段值错误。
39.本实施例通过预先将多个日志文件的初始化格式文件存储在独立日志格式库中,根据目标日志校验请求从独立日志格式库中获取对应的目标日志格式,然后根据该目标日志格式中的信息,从目标日志中提取得到待校验字段和字段值,最后对待校验字段和字段值进行校验,得到目标日志的校验结果。由此,本发明实施例在不需要在校验脚本中编写每个需要校验的脚本的位置信息,可以直接根据获取到的格式文件,提取得到待校验字段和对应的字段值,简化了校验脚本,有利于后期对校验脚本的维护,提高了校验效率。
40.在实际应用中,对日志中的字段(待校验字段和对应的字段值)进行校验时,可以采用多种方法(不同的函数或校验方式)进行校验,以下实施例对不同的校验方法进行了说明。
41.在一种实施例中,对所述待校验字段和所述字段值进行校验,包括:根据所述目标日志格式,确定所述待校验字段的期望值;根据所述目标日志校验请求,确定校验函数,所述校验函数包括多字段校验函数、单字段校验函数和正则校验函数;利用所述期望值,按照确定的所述校验函数,对所述待校验字段和所述字段值进行校验。
42.在本实施例中,期望值表示目标日志格式中所规定的该字段的字段值,该期望值可以为一个具体的参数值,或一个参数区间。如上述实施例中所述,对待校验字段和字段值的校验,一方面是确定提取出的待校验字段与校验请求中所规定的要校验的字段是否相同,另一方面是确定提取出的待校验字段的字段值是否符合规定的期望值,这两方面的校验过程主要是基于校验函数进行的。该校验函数表示对待校验字段和字段值的不同校验方法,具体可以包括多字段校验函数、单字段校验函数和正则校验函数。其中,单字段校验函数表示用于对单个字段进行校验的校验函数;多字段校验函数表示用于对多个字段进行批量校验的校验函数;正则校验函数表示校验关于待校验字段和字段值的字符串是否符合正则表达式的校验函数。
43.本实施例可以根据目标日志校验请求,确定校验函数。具体的,可以在该目标日志校验请求中预先人为设定所要使用的校验函数,在获取到该目标日志校验请求后,可以直接确定出需要的校验函数,进而利用期望值,按照确定的校验函数,对待校验字段和字段值进行校验。本实施例提出了在对待校验字段和字段值进行校验时,可以采用不用的校验函数进行校验,具体采用哪种校验函数可以在目标日志校验请求中预先设定。例如,当对一份日志文件中的多个字段进行校准时,可以直接在目标日志校验请求中设定采用多字段校验函数,从而实现多个字段的批量校验。由此,本实施例针对不同的校验需求,选择适用的校验函数,实现更加精准有效地日志校验。
44.不同的校验函数在应用时,存在一定的差异,如下实施例分别对利用单字段校验函数的校验方法和利用多字段校验函数的校验方法进行了具体的示例性的说明。
45.在一种实施例中,在所述校验函数为单字段校验函数的情况下,按照确定的所述校验函数,对所述待校验字段和所述字段值进行校验,包括:根据所述目标日志校验请求,确定校验规则为精确匹配规则或模糊匹配规则;按照确定出的所述校验规则,将所述待校验字段和所述字段值作为两个独立的参数,利用所述单字段校验函数分别进行校验。
46.在本实施例中,在利用单字段校验函数进行校验时,具体还分为两种校验规则:精确匹配规则或模糊匹配规则。精确匹配规则用于按照更加精确严谨的标准进行匹配校验,例如在字段值和参考值两者完全匹配的情况下,确定该字段值校验通过;模糊匹配规则则用于按照较为宽松的标准进行匹配校验,例如在字段值与参考值两者的匹配结果在一定误差范围内的情况下,确定该字段值校验通过。本实施例可以根据目标日志校验请求,确定校验规则。具体的,该目标日志校验请求中可以预先人为设定所要使用的校验规则为精准匹配规则或模糊匹配规则,在获取到该目标日志校验请求后,可以直接确定出对应的校验规则,进而按照该校验规则,对待校验字段和字段值进行校验。
47.本实施例将待校验字段和字段值作为两个独立的参数,利用单字段校验函数分别进行校验。示例性的,若目标日志校验请求中设定为精确匹配规则,利用单字段校验函数,分别对待校验字段和字段值这两个参数进行校验,将提取出的待校验字段和目标日志校验请求中设置的字段进行精确匹配,并且,将提取出的待校验字段的字段值与期望值进行精确匹配,若两者均匹配通过,则表示校验通过。又或者,在目标日志校验请求中设定对字段位置执行精确匹配规则,对字段值进行模糊匹配规则,则对应地,在进行校验时,利用单字段校验函数,将提取出的待校验字段和目标日志校验请求中设置的字段进行精确匹配,并且,将提取出的待校验字段的字段值与期望值进行模糊匹配,若两者均匹配通过,则表示校验通过。本实施例提出了两种精度的校验方法,在进行单字段校验时,按照实际校验需求,可以选择采用精确匹配规则或模糊匹配规则,分别对待校验字段和字段值进行校验,实现了更加灵活地选择适用的校验方法去进行日志校验。
48.在一种实施例中,在所述校验函数为多字段校验函数的情况下,按照确定的所述校验函数,对所述待校验字段和所述字段值进行校验,包括:根据所述目标日志校验请求,确定校验规则为精确匹配规则或模糊匹配规则;按照确定出的所述校验规则,将每个所述待校验字段和对应的所述字段值作为一个字符串,利用所述多字段校验函数对所述字符串逐个进行校验。
49.在本实施例中,当对多个字段进行批量校验时,可以采用多字段校验函数进行校验,并且,在采用多字段校验函数时,同样分为两种校验规则:精确匹配规则或模糊匹配规则。如上述实施例所述,该目标日志校验请求中可以预先人为设定所要使用的校验规则,在获取到该目标日志校验请求后,可以直接确定出对应的校验规则,进而按照该校验规则,对多个字段逐个进行校验。
50.按照确定出的校验规则进行校验时,将每个待校验字段和该字段对应的字段值作为一个字符串,利用多字段校验函数对字符串逐个进行校验。在进行批量校验时,预期值作为列表参数,支持多个“待校验字段:字段值”的字符串的校验。具体的,利用多字段校验函数进行校验的过程,可以表示为循环调用单字段校验函数的过程,即调用单字段校验函数针对一个字符串中的待校验字段和该待校验字段对应的字段值进行校验,在校验完成后,再对下一个字符串进行校验,从而完成对多个字符串的逐个校验。
51.按照原有的日志校验方法,对于一个日志中的每个字段均需要一份单独的校验脚本,如上述实施例所述,一个字段的校验至少需要编写两行脚本,第一行脚本用于在日志中提取出该字段,第二行脚本用于对提取出的字段进行校验。上述校验方法中,一份脚本只能校验一个字段,当存在多个字段需要校验时,需要编写数量庞大且内容较为重复的校验脚本。针对此问题,本实施例提出,利用多字段校验函数实现对多个字段的批量校验,以提高日志校验效率。
52.示例性的,对于访问日志a,需要校验该日志a中的time、status和upstream_addr三个字段。按照旧有的校验方法,需要分别编写time、status和upstream_addr的校验脚本,则至少需要编写六行脚本。按照本实施例所提出的校验方法,将待校验字段和字段值作为一个字符串,例如“time:3”,“status:5”和“upstream_addr:2”,将这三个字符串编写在一行脚本中,利用多字段校验函数对上述三个字符串逐个进行校验。由此,本实施例利用多字段校验函数,实现了对多个字段的批量校验,进一步简化校验脚本的编写和后期维护,提高了日志校验效率。
53.在一种实施例中,在所述校验方法为多字段校验函数的情况下,按照确定的所述校验函数,对所述待校验字段和所述字段值进行校验,还包括:将所述期望值按照指定分隔符拆分为第一期望值和第二期望值;在所述第二期望值为空的情况下,只利用所述第一期望值,对所述字段值进行校验;在所述第二期望值不为空的情况下,利用所述第一期望值和所述第二期望值与所述字段值做范围校验。
54.在本实施例中,在多字段校验的情况下,期望值分为两种,一种是期望值为一个设定的参数值,另一种是期望值为一个设定的参数区间。本实施例利用指定分隔符,对期望值进行分割,拆分为第一期望值和第二期望值。具体的,若期望值为一个设定的参数值,如3,则对应的拆分得到的第一期望值为该设定的参数值3,第二期望值为空。若期望值为一个设定的参数区间,如5-10,则对应的拆分得到的第一期望值为该区间的最小值5,第二期望值为该区间的最大值10。
55.本实施例通过将其拆分为第一期望值和第二期望值,在第二期望值为空的情况下,即该期望值为一个具体的参数值时,只利用第一期望值,对所述字段值进行校验。当该
字段值与第一期望值相等时,表示该字段值校验成功,当两者不相等时,表示该字段值校验失败。在第二期望值不为空的情况下,即该期望值为一个具体的参数区间时,利用第一期望值和第二期望值与字段值做范围校验,即判断该字段值是否大于第一期望值,并且小于第二期望值,落在该[第一期望值,第二期望值]区间内。
[0056]
本实施例考虑到期望值可能为具体的参数值或参数区间,通过将获取到的期望值拆分为第一期望值和第二期望值,判断第二期望值是否为空,实现了提取出的字段的字段值与期望值的匹配校验,扩大了本实施例所提出的校验方法的适用范围。
[0057]
在一种实施例中,所述方法还包括:获取更新后的日志格式;根据所述更新后的日志格式,对所述独立日志格式库中对应的所述初始化格式文件进行更新。
[0058]
在本实施例中,当日志文件的格式或内容发生变更时,可以先获取更新后的日志格式,然后按照更新后的日志格式,对存储在独立日志格式库中的对应的初始化格式文件进行更新,并替换掉原来的初始化格式文件。其中,日志格式的更新可以为日志中的一个或多个字段的增删、字段位置的调整、字段值的更改、以及日志文件名的变化等多种情况。
[0059]
按照常规的日志校验方法,当日志的格式发生变化时,例如,访问日志的第一个字段增加为版本号,则所有字段向后移一个字段位置,time字段原本位于第50个字段,在增加版本号后,time字段变更为第51个字段。对应的,校验脚本中的time字段位置信息也需要从50修改为51。又或者,当日志的网关发生变化,从access.log迁移至统一日志core_access.log时,基本上各个字段的校验脚本均需要进行对应的调整。所以,日志格式的细微变化,很有可能导致脚本中大量字段的相关信息需要调整,当全量有几千个的脚本时,脚本的修改工作量会非常大,如果遇到日志版本回退,还要把校验脚本再修改回原有版本,导致工作量翻倍,后期的维护成本升高。
[0060]
参照图2,图2示出了一种常规的脚本修改方法示意图,如图2所示,按照上述常规的日志校验的方法,首先待校验日志落地,即获取到需要校验的日志,如对访问日志进行校验。如图2所示,在原本的访问日志中,time为第一个字段,在校验脚本中编写的位置信息为{print$1},status为第三个字段,在校验脚本中编写的位置信息为{print$3},第100个字段,在校验脚本中编写的位置信息为{print$100}。然而,当该访问日志增加一个版本号到第一个字段,后续所有字段均需要向后移一个字段位置,且对应的校验脚本需要进行修改。如图2所示,time变更为第二个字段,在校验脚本中编写的位置信息需要同样修改为{print$2},status变更为第四个字段,在校验脚本中编写的位置信息需要同样修改为{print$4},原来的第100个字段变更为第101个字段,在校验脚本中编写的位置信息需要同样修改为{print$101}。所以,日志格式的变化,导致脚本中大量的信息需要随之进行修改。
[0061]
按照本发明实施例所提出的日志校验方法,当日志格式发生更新,只需按照更新后的日志格式,对存储在独立日志格式库中的初始化格式文件对应的调整即可,不用对校验脚本进行更改。参照图3,图3示出了一种日志校验方法流程示意图,如图3所示,首先待校验日志落地,即获取到需要校验的日志,如对访问日志进行校验。如图3所示,根据访问日志的校验请求,获取格式信息,该格式信息中可以包括多个参数,如图3中所示的参数1:日志文件,即待校验的访问日志文件;参数2:日志格式,即从独立日志格式库中获取到的访问日
志的初始化格式文件;参数3:字段名称key,即访问日志中需要校验的待校验字段的名称;参数4:预期value,即待校验字段的期望值。由此,根据获取到的格式信息,将上述参数作为日志校验函数的参数,按照校验脚本,对访问日志进行校验,即,提取字段time、字段status和字段100,并对其进行校验。当访问日志的日志格式发生变化时(例如字段位置发生变化时),只需要对应地更改独立日志格式库中的初始化格式文件(相当于参数中的内容),就可以按照原来的校验脚本进行校验。由此,本实施例实现了当日志格式发生变化时,只需修改独立日志格式库中的初始化格式文件,减少了对校验脚本的修改,实现了校验脚本与日志格式的低耦合,减少维护成本。
[0062]
本实施例通过获取目标日志校验请求;根据校验请求获取预先存储在独立日志格式库中的目标日志格式,独立日志格式库中存储有多个日志文件的初始化格式文件;根据目标日志格式,获取待校验字段和待校验字段的字段值;对待校验字段和对应的字段值进行校验,得到目标日志的校验结果。由此,本发明实施例通过预先将多个日志的格式文件存储在独立日志格式库中,在进行校验时,直接获取对应的目标日志格式,从而根据该目标日志格式从目标日志中提取得到待校验字段,确定出该待校验字段的字段值,进而完成日志校验,确定该字段在日志中的位置是否正确,字段值是否符合目标日志格式所规定的期望值。由此,不需要在校验脚本中编写字段的位置信息,直接通过独立日志格式库获取需要的字段位置信息,就可以从目标日志中提取得到待校验字段和对应的字段值,简化了校验脚本的编写,提高了校验效率。
[0063]
需要知道的是,校验脚本为一个个单独的robot文件,如果只在一个独立的robot文件中封装关键字(该关键字可以表示对应的函数),那么其他robot文件是无法调用这个关键字(函数)的,只能去引用该robot文件,本发明实施例将关键字或相关函数公开化提炼出来,放在一个公共的目录下,从而使得其他robot都可以引用需要的关键字(函数),实现了关键字公用化,即部分公共关键字跨日志文件使用,例如利用公共关键字根据参数提取字段、根据参数进行校验等。
[0064]
示例性的,对于访问日志,校验所用的脚本为访问日志的校验脚本。在新增了回源日志后,需要另外编写对回源日志的校验脚本。按照以往的校验方法,需要编写新的校验脚本,对回源日志重新进行解析,提炼该回源日志中的字段位置。按照本发明实施例所提出的校验方法,不需要再对回源日志进行文件解析和字段提取,可以直接调用对应的公共关键字(函数),通过独立日志格式库获取回源日志的日志格式,从而直接提取得到回源日志的待校验字段和字段值,将两者以参数的形式,利用公共关键字进行校验,达到了关键字复用的效果,降低了校验目标与关键字之间的耦合度,便于后期直接对公共关键字进行维护,提高校验效率。
[0065]
由此,按照本实施例所提出的校验方法,在需要校验新的日志文件时,仍然可以使用原有的校验脚本,调用公共关键字,对新的日志文件进行校验。即,根据新的日志文件,在独立日志格式库中获取对应的目标日志格式,根据该目标日志格式,调用公共关键字,从该新的日志文件中提取得到待校验字段和对应的字段值,将待校验字段和对应的字段值作为参数,利用对应的公共关键字进行校验,得到校验结果,达到了关键字复用的效果,校验其他日志文件时,无需另外编写针对新的日志文件的校验脚本或关键字,实现了关键字公用最大化,提高了校验效率。
[0066]
本实施例提供了一种日志校验装置,参照图4,图4示出了一种日志校验装置的结构示意图,如图4所示,所述装置包括:独立日志格式库,用于存储多个日志文件的初始化格式文件;数据处理模块,用于获取目标日志校验请求,根据所述目标日志校验请求获取目标日志格式,根据所述目标日志格式获取待校验字段和所述待校验字段的字段值;内容校验模块,用于对所述数据处理模块中获取的所述待校验字段和所述字段值进行校验,得到目标日志的校验结果。
[0067]
在一种实施例中,所述数据处理模块包括:位置信息获取子模块,用于根据所述目标日志格式,获取所述待校验字段的位置信息;字段提取子模块,用于根据所述位置信息,从所述目标日志中提取所述待校验字段;字段值确定子模块,用于根据所述待校验字段,确定所述待校验字段的字段值。
[0068]
在一种实施例中,所述内容校验模块,包括:期望值确定子模块,用于根据所述目标日志格式,确定所述待校验字段的期望值;校验函数和确定子模块,用于根据所述目标日志校验请求,确定校验函数,所述校验函数包括多字段校验函数、单字段校验函数和正则校验函数;校验子模块,用于利用所述期望值,按照确定的所述校验函数,对所述待校验字段和所述字段值进行校验。
[0069]
在一种实施例中,所述校验子模块,包括:匹配规则确定单元,用于根据所述目标日志校验请求,确定校验规则为精确匹配规则或模糊匹配规则;单字段函数校验单元,用于按照确定出的所述校验规则,将所述待校验字段和所述字段值作为两个独立的参数,利用所述单字段校验函数分别进行校验。
[0070]
在一种实施例中,所述校验子模块,包括:规则确定单元,用于根据所述目标日志校验请求,确定校验规则为精确匹配规则或模糊匹配规则;多字段函数校验单元,用于按照确定出的所述校验规则,将所述待校验字段和所述字段值作为两个独立的参数,利用所述多字段校验函数分别进行校验。
[0071]
在一种实施例中,所述校验子模块,还包括:期望值拆分单元,用于将所述期望值按照指定分隔符拆分为第一期望值和第二期望值;第一字段值校验单元,用于在所述第二期望值为空的情况下,只利用所述第一期望值,对所述字段值进行校验;第二字段值校验单元,用于在所述第二期望值不为空的情况下,利用所述第一期望值和所述第二期望值与所述字段值做范围校验。
[0072]
在一种实施例中,所述装置还包括:更新信息获取模块,用于获取更新后的日志格式;更新模块,用于根据所述更新后的日志格式,对所述独立日志格式库中对应的所
述初始化格式文件进行更新。
[0073]
本实施例还提供了一种日志校验系统,参照图5,图5示出了一种日志校验系统的结构示意图,如图5所示,所述系统包括:请求获取模块,用于获取目标日志校验请求;格式获取模块,用于根据所述校验请求获取预先存储在独立日志格式库中的目标日志格式,所述独立日志格式库中存储有多个日志文件的初始化格式文件;字段获取模块,用于根据所述目标日志格式,获取待校验字段和所述待校验字段的字段值;校验模块,用于对所述待校验字段和所述字段值进行校验,得到目标日志的校验结果。
[0074]
在一种实施例中,所述字段获取模块,包括:位置获取子模块,用于根据所述目标日志格式,获取所述待校验字段的位置信息;提取子模块,用于根据所述位置信息,从所述目标日志中提取所述待校验字段;确定子模块,用于根据所述待校验字段,确定所述待校验字段的字段值。
[0075]
在一种实施例中,所述校验模块,包括:期望值确定单元单元,用于根据所述目标日志格式,确定所述待校验字段的期望值;校验函数确定单元,用于根据所述目标日志校验请求,确定校验函数,所述校验函数包括多字段校验函数、单字段校验函数和正则校验函数;校验单元,用于利用所述期望值,按照确定的所述校验函数,对所述待校验字段和所述字段值进行校验。
[0076]
在一种实施例中,所述校验单元,包括:匹配规则确定子单元,用于根据所述目标日志校验请求,确定校验规则为精确匹配规则或模糊匹配规则;单字段函数校验子单元,用于按照确定出的所述校验规则,将所述待校验字段和所述字段值作为两个独立的参数,利用所述单字段校验函数分别进行校验。
[0077]
在一种实施例中,所述校验单元,包括:规则确定子单元,用于根据所述目标日志校验请求,确定校验规则为精确匹配规则或模糊匹配规则;多字段函数校验子单元,用于按照确定出的所述校验规则,将所述待校验字段和所述字段值作为两个独立的参数,利用所述多字段校验函数分别进行校验。
[0078]
在一种实施例中,所述校验单元,还包括:期望值拆分子单元,用于将所述期望值按照指定分隔符拆分为第一期望值和第二期望值;第一字段值校验子单元,用于在所述第二期望值为空的情况下,只利用所述第一期望值,对所述字段值进行校验;第二字段值校验子单元,用于在所述第二期望值不为空的情况下,利用所述第一期望值和所述第二期望值与所述字段值做范围校验。
[0079]
在一种实施例中,所述系统还包括:
更新日志格式获取模块,用于获取更新后的日志格式;日志格式更新模块,用于根据所述更新后的日志格式,对所述独立日志格式库中对应的所述初始化格式文件进行更新。
[0080]
本发明实施例还提供了一种电子设备,参照图6,图6是本发明实施例提出的电子设备的结构示意图。如图6所示,电子设备100包括:存储器110和处理器120,存储器110与处理器120之间通过总线通信连接,存储器110中存储有计算机程序,该计算机程序可在处理器120上运行,进而实现本发明实施例公开的一种日志校验方法中的步骤。
[0081]
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序/指令,该计算机程序/指令被处理器执行时实现本发明实施例公开的日志校验方法中的步骤。
[0082]
本发明实施例还提供了一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现本发明实施例公开的日志校验方法中的步骤。
[0083]
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0084]
本发明实施例是参照根据本发明实施例的方法、装置、电子设备和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0085]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0086]
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0087]
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
[0088]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
[0089]
以上对本发明所提供的一种日志校验方法、装置和产品,进行了详细介绍,本文中
应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1