CN107688624B - 一种日志索引构建方法及装置 - Google Patents

一种日志索引构建方法及装置 Download PDF

Info

Publication number
CN107688624B
CN107688624B CN201710711234.0A CN201710711234A CN107688624B CN 107688624 B CN107688624 B CN 107688624B CN 201710711234 A CN201710711234 A CN 201710711234A CN 107688624 B CN107688624 B CN 107688624B
Authority
CN
China
Prior art keywords
log
index
file
record
field combination
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710711234.0A
Other languages
English (en)
Other versions
CN107688624A (zh
Inventor
谭天
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou DPtech Information Technology Co Ltd
Original Assignee
Hangzhou DPTech Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou DPTech Technologies Co Ltd filed Critical Hangzhou DPTech Technologies Co Ltd
Priority to CN201710711234.0A priority Critical patent/CN107688624B/zh
Publication of CN107688624A publication Critical patent/CN107688624A/zh
Application granted granted Critical
Publication of CN107688624B publication Critical patent/CN107688624B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提供一种日志索引构建方法及装置。日志索引构建方法包括:根据预设的字段组合规则,确定日志文件中至少一个需要创建索引文件的必需字段组合;针对所述日志文件中每条日志记录,执行以下操作:获取所述日志记录中字段的值;将字段的值拼接为所述必需字段组合的值;获取所述日志记录在所述日志文件中的偏移位置;针对每个字段组合的每个不同值创建索引记录,索引记录中还包括所述每个不同值对应的日志记录的偏移位置;将同一字段组合的索引记录,写入所述日志文件的一个索引文件中。应用本申请方案,可以有效地提高日志查找效率。

Description

一种日志索引构建方法及装置
技术领域
本申请涉及计算机技术领域,特别是涉及一种日志索引构建方法及装置。
背景技术
在计算机中,通常会将操作系统或其他软件运行中发生的事件记录在日志中,日志可以在诸如日常维护系统的运行、诊断软件问题的原因时提供信息。在记录日志时,通常会采用预置的日志格式,即预置需要记录的一个或多个字段,不同事件的每个预置字段的值可能不同。针对某一事件记录的日志,就是由该事件所有预置字段的值组成。例如,将记录某软件操作的日志的字段设置为“时间”和“操作”,则该软件每次执行操作,都会生成一条包括时间值和操作值的日志,而用户需要查看何时执行了某项特定操作时,查找并获取“操作”字段为对应操作值的日志,就可以根据日志内容获取信息。对日志的查找不一定是实时进行的,通常是将日志存储在设备或者网络中,以便需要时进行查找。
现有技术中,通常是根据日志记录产生的时间,将其顺序存储在日志文件中。查找字段的值为特定值的日志记录时,就需要遍历每条日志记录,判断其中该字段的值是否为特定值,显然,这种遍历的查找方式效率很低,尤其是日志较多时,可能会消耗较多的时间和资源。
发明内容
有鉴于此,本申请提供一种日志索引构建方法及装置,技术方案如下:
根据本申请的第一方面,提供一种日志索引构建方法,该方法包括:
根据预设的字段组合规则,确定日志文件中至少一个需要创建索引文件的必需字段组合;
针对所述日志文件中每条日志记录,执行以下操作:
获取所述日志记录中字段的值;
将字段的值拼接为所述必需字段组合的值;
获取所述日志记录在所述日志文件中的偏移位置;
针对每个字段组合的每个不同值创建索引记录,索引记录中还包括所述每个不同值对应的日志记录的偏移位置;
将同一字段组合的索引记录,写入所述日志文件的一个索引文件中。
根据本申请的第二方面,提供一种基于前述日志索引的日志查找方法,该方法包括:
根据查询请求指定的目标字段组合,查找与目标字段组合对应的目标索引文件;
在所述目标索引文件中,查找包括目标值的索引记录;
根据所述包括目标值的索引记录中的偏移位置,获取日志记录;
利用所获取的日志记录响应所述查询请求。
根据本申请的第三方面,提供一种日志索引构建装置,该装置包括:
字段组合确定模块,用于根据预设的字段组合规则,确定日志文件中至少一个需要创建索引文件的必需字段组合;
字段值获取模块,用于针对所述日志文件中每条日志记录,获取所述日志记录中字段的值;
字段值拼接模块,用于将字段值获取模块获取的值,拼接为所述必需字段组合的值;
偏移位置获取模块,用于获取所述每条日志记录在所述日志文件中的偏移位置;
索引记录创建模块,用于针对每个字段组合的每个不同值创建索引记录,索引记录中还包括所述每个不同值对应的日志记录的偏移位置;
索引记录写入模块,用于将同一字段组合的索引记录,写入所述日志文件的一个索引文件中。
根据本申请的第四方面,提供一种基于前述日志索引的日志查找装置,该装置包括:
索引文件查找模块,用于根据查询请求指定的目标字段组合,查找与目标字段组合对应的目标索引文件;
索引记录查找模块,用于在所述目标索引文件中,查找包括目标值的索引记录;
日志记录获取模块,用于根据所述包括目标值的索引记录中的偏移位置,获取日志记录;
查询请求响应模块,用于利用所获取的日志记录响应所述查询请求。
根据本申请的第五方面,提供一种日志查找系统,该系统包括前述的日志索引构建装置及日志查找装置。
在实际进行日志查找时,用户会根据一个或多个字段形成的字段组合进行查找,本申请所提供的技术方案,针对日志文件中的多种字段组合创建索引文件,并写入字段组合的不同值及对应的日志记录的偏移位置。所创建的索引文件能够覆盖所有可能的查找情况,在查询请求指定了目标字段组合及其值后,可以通过索引文件直接定位到日志记录,避免了遍历所有的日志记录,有效地提高了查找效率。此外,本申请所提供的技术方案,还可以通过设定日志文件的时间点,标识不同日志文件中日志记录产生的时间区间,从而,在查询请求指定了目标时间区间时,可以方便地确定要查找的日志文件,保证查找效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。此外,本申请中的任一实施例并不需要达到上述的全部效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本申请的日志索引构建方法的流程示意图;
图2是本申请的日志查找方法的流程示意图;
图3是本申请的日志索引构建装置的第一种结构示意图;
图4是本申请的字段组合确定模块的结构示意图;
图5是本申请的日志索引构建装置的第二种结构示意图;
图6是本申请的日志查找装置的结构示意图;
图7是本申请的索引文件查找模块的结构示意图;
图8是本申请的日志查找系统的结构示意图。
具体实施方式
为了使本领域技术人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本申请保护的范围。
首先对本发明实施例的日志索引构建方法进行说明,参见图1所示,该方法可以包括以下步骤:
S101,根据预设的字段组合规则,确定日志文件中至少一个需要创建索引文件的必需字段组合;
在实际进行日志查找时,类似于使用搜索引擎查找需要的网页,用户可能会根据某个特定字段查找日志,也可能是根据多个字段的组合,查找同时满足多个需求的日志,因此,为了保证查找结果的全面性,必须保证创建的索引能够覆盖所有的查找情况。这里,将查找时所根据的一个或多个字段称为字段组合,本步骤需要根据某种规则,确定针对日志文件中的哪些字段组合创建索引,能够保证覆盖到所有的查找情况。
确定必需字段组合的规则并不唯一,甚至可以将日志文件中n个字段对应的2n-1个字段组合,全部确定为必需字段组合,可以理解的是,只要能够保证创建的索引覆盖了所有的查找情况,本申请提供的基本方案并不受具体规则的影响,在实际应用中,本领域技术人员可以根据日志记录及字段的数量等因素选取适当的规则。
S102,依次从所述日志文件中,选择一条日志记录:
S103,获取所述日志记录中字段的值;
S104,将字段的值拼接为所述必需字段组合的值;
为了便于描述,将S103与S104结合进行说明。
将字段组合中每个字段的值,按照对应的顺序拼接成的组合值,即为字段组合的值。日志文件中的字段,在每条日志记录中都有其对应的值,因此,字段组合在每条日志记录中也都有其对应的值。在查询请求中,一般会指定目标字段组合,及目标字段组合的值,因此,对字段组合创建的索引中,需要包括日志文件中字段组合的所有取值。
S105,获取所述日志记录在所述日志文件中的偏移位置;
为了通过索引直接定位到需要的日志记录,索引中还需要包括日志记录的位置信息。本申请使用的位置信息,是日志记录在日志文件中的偏移位置,这样,即使日志文件的存储位置发生了改变,只要日志记录在日志文件中的位置不变,便不需要更新索引中日志记录的位置信息。
S106,判断选择的日志记录是否为最后一条日志记录;
即判断是否获取了日志文件中,所有日志记录的字段组合的值和偏移位置。
S107,针对每个字段组合的每个不同值创建索引记录,索引记录中还包括所述每个不同值对应的日志记录的偏移位置;
日志文件中的字段,在每条日志记录中都有其对应的值,因此,字段组合在每条日志记录中也都有其对应的值。不同的日志记录中,同一字段组合的值可能相同,也可能不同,而用户查找时,就是想要获取字段组合的值为某个特定值的所有日志记录。因此,针对每个不同的值,都需要创建一条索引记录,并将这每个不同值对应的日志记录的偏移位置,写入所创建的这条索引记录中。
S108,将同一字段组合的索引记录,写入所述日志文件的一个索引文件中。
每个字段组合在不同的日志记录中,可能会有多个不同的值,因此,可能会对此创建多个索引记录,为了将对不同字段组合创建的索引记录区分开,将针对同一字段组合创建的索引记录,写入同一个索引文件中。同时,可以为索引文件添加一定的标识,例如在索引文件名中包含与字段组合相关的信息,或者在索引文件的其他可读位置中记录与字段组合相关的信息等。“与字段组合相关的信息”可以是字段组合本身、字段组合的某种形变、字段组合的某种编码等等。总之,可以实现“表明该索引文件是针对哪个字段组合创建的”的基本需求即可。
随着设备中的日志记录的增多,可能需要存入多个日志文件中,而每个日志文件根据字段的个数不同,可能会创建一至多个索引文件。日志文件中,每条日志记录可能存在多个字段组合值,对应多个字段组合,即一条日志记录可能对应多个索引文件。相对地,索引文件中,每个索引记录中的字段组合的值,可能存在于多条日志记录,即一个索引记录可能对应多条的日志记录。
每个日志文件与对其中的字段组合创建的索引文件,存在着对应关系,为了便于后续日志的查找,可以进一步地,将日志文件和索引文件对应存储,具体可以是存储位置对应、存储名称对应、建立对应查找表、等等,可以理解的是,这里将二者对应存储,目的是在获取索引记录中的偏移位置后,能够确定日志记录所在的日志文件,在实际应用中,本领域技术人员可以根据实现复杂度、日志文件及索引文件数目等因素,选取适当的方法。
参见图2所示,基于上述的日志索引构建方法,在实际进行日志查找时,对应的日志查找方法可以包括以下步骤:
S201,根据查询请求指定的目标字段组合,查找与目标字段组合对应的目标索引文件;
用户在进行查找时,一般会指定字段组合及其值,类似于使用搜索引擎查找需要的网页,多个相同字段按照不同顺序组成的组合,对应的是同一个字段组合,并且可以理解的是,计算机可以识别出具体对应的字段组合。
另外,指定的字段组合可能为建立了索引文件的必需字段组合,则可以通过索引文件中带有字段组合信息的标识,直接查找到对应的索引文件。若指定的字段组合不是必需字段组合,则首先需要通过与S101中相同的规则,确定当前的查找情况,包括在哪个索引文件中。
S202,在所述目标索引文件中,查找包括目标值的索引记录;
由于在索引构建阶段,已经针对日志文件中字段组合的所有值分别创建了索引记录,并且将针对同一字段组合创建的索引记录,写入同一个索引文件中,因此在本步骤中,可以在确定的目标索引文件中,比对查询请求指定的目标值,与索引记录中的值,从而查找到包括目标值的索引记录。
S203,根据所述包括目标值的索引记录中的偏移位置,获取日志记录;
S204,利用所获取的日志记录响应所述查询请求。
为了便于描述,将S203与S204结合进行说明。
查找到包括目标值的索引记录后,获取其中的偏移位置,即可在目标索引文件对应的日志文件中,找到偏移位置处的具体日志记录,并进一步响应查询请求。
另外,根据本申请方案,如果在S201中,因为目标字段组合中的某一个或多个字段,未包括在日志文件中,从而没有找到对应的索引文件,或者在S202中,目标索引文件中,没有包括目标值的索引记录,则响应查询请求的方式为,返回“未查找到日志记录”。
可见,应用本申请方案,由于对日志的字段组合创建了索引,因此在日志查找阶段,针对目标字段组合及其值,可以通过索引直接获取日志记录,避免遍历所有的日志记录,从而提高了查找效率。
可以理解的是,以上实施例重点是对本申请与现有技术的区别进行说明,在实际应用中,本申请方案的各个步骤均可以采用现有的其他方式实现。本领域技术人员可以根据实际情况选择具体的实施方式,本申请不做限定。
下面结合一个具体的实例,对本申请方案进行示意性说明。
假设某个日志文件xxx.log中有3个字段,分别为A、B、C,且多个相同字段按照不同顺序组成的组合,对应的是同一个字段组合,则这3个字段可以组成7个字段组合,分别为:A、B、C、AB/BA、AC/CA、BC/CB、ABC/CBA/BAC/BCA。假设A、B、C三个字段的取值范围均为0~9,同时,该日志文件中共有4条日志记录,则其内容示意如表1所示:
字段A 字段B 字段C
日志记录1 2 4 4
日志记录2 1 5 7
日志记录3 1 0 8
日志记录4 2 4 4
表1
据表1,可以获取4条日志记录中字段A、B、C的值,从而拼接出字段组合ABC的值,分别为244、157、108和244。同时,可以获取4条日志记录在日志文件中的偏移位置,分别为第1行、第2行、第3行和第4行。那么,可以对字段组合ABC,创建3个索引记录,并可以按照一定的顺序写入索引文件中,进一步提高后续查找的效率。将3个索引记录按照ABC值的大小顺序,写入如表2所示的索引文件中:
ABC的值 偏移位置
108 第3行
157 第2行
244 第1行、第4行
表2
此外,可以将此索引文件命名为xxx.log.ABC,从而通过命名中的ABC,标识此索引文件,是对xxx.log日志文件中的字段组合ABC创建的。
在日志查找阶段,用户可能需要查找A、B、C的值分别为2、4、4的日志记录,则查询请求指定的目标字段组合即为ABC,目标值即为244。首先可以通过索引文件的名称,确定与ABC对应的目标索引文件是xxx.log.ABC。由于索引记录在索引文件中是顺序排列的,因此可以利用二分查找,在索引文件中快速找到字段组合值与目标值244相同的索引记录,这里即为第3个索引记录,根据其中的偏移位置,获取日志文件的第1、4行的日志记录,则响应查询请求的方式可以为,返回这两条日志记录的内容。
另外,可以理解的是,多个相同字段按照不同顺序组成的组合,对应的是同一个字段组合,且计算机可以识别出具体对应的字段组合。例如,如果用户需要查找B、A、C的值分别为4、2、4的日志记录,其实等同于查找A、B、C的值分别为2、4、4的日志记录,对应的查询请求也是指定目标字段组合ABC,目标值244。
类似地,也可建立字段组合A的索引文件xxx.log.A,其内容示意如表3所示:
A的值 偏移位置
1 第2行、第3行
2 第1行、第4行
表3
在日志查找阶段,用户可能需要查找A的值为1的日志记录,即查询请求指定的目标字段组合为A,目标值为1,根据索引文件xxx.log.A即可获取日志记录2、3响应查询请求。
由此可知,可以对3个字段的7种字段组合创建7个索引文件,从而保证覆盖所有的查询情况。即,对n个字段的全部2n-1种字段组合均创建索引文件。但是,如果日志文件中的字段较多,索引文件的个数会随字段个数呈指数增加,当n增大到一定程度时,索引文件的个数将变得极大,此时,创建索引文件的代价,无论是时间上的还是空间上的代价都会变得极大,导致无法于实践中应用。
在本申请的一种具体实施方式中,对日志文件中的n个字段,可以确定
Figure BDA0001382734900000091
个必需字段组合,即只需创建
Figure BDA0001382734900000101
个索引文件,即可覆盖所有2n-1种查询情况,其中
Figure BDA0001382734900000102
为对
Figure BDA0001382734900000103
的结果向上取整。
例如,如果用户需要查找A的值为1的日志记录,可以认为查询请求指定的目标字段组合为ABC,目标值为100~199,此时,根据索引文件xxx.log.ABC,也可获取日志记录2、3响应查询请求。即通过索引文件xxx.log.ABC同样可以查找字段A为特定值的日志记录,且查询结果同样准确。类似地,索引文件xxx.log.ABC还可以用于字段组合AB的查找,只需将目标值中C对应的值,用其取值范围的0~9补全即可;索引文件xxx.log.BC可以用于字段组合B、BC的查找;索引文件xxx.log.CA可以用于字段组合C、CA的查找。即只需创建3个索引文件,即可覆盖全部7种查询情况,字段组合ABC、BC、CA即为必需字段组合,在日志查找阶段,如果目标字段组合不是必需字段组合,则目标值需要将缺省字段的值,使用所有取值补全,即查找一定取值范围内的多个值。此外,如果索引记录是按照字段组合值的大小顺序写入索引文件中的,则此时只需找到多个值中的最大值和最小值对应的索引记录,通过这两条索引记录及其之间的所有索引记录,即可获取所有需要的日志。
可以理解的是,本申请中所称的日志,可以指已经产生并存储的情况,也可以指生成后暂存在内存中,还未写入日志文件的情况。对于即时生成的日志记录,可以在系统启动时预先分配一块内存M1,将需要暂存的日志写入其中。M1的空间大小可以根据实际情况进行调整,日志顺序地写入其中,直至M1中无多余的空间容纳更多的日志时,可将其更名为M2(M2对应的内存是不可更改的),并分配一块新的内存作为新M1的来暂存新生成的日志,如果内存空间充裕,系统启动时可以将两块内存均预先分配,以便需要时轮换使用。
此外,对于日志内容不再变化的M2,根据本申请确定k个必需字段组合,即需要创建k个索引文件后,可以启动k个后台线程创建这k个索引文件。若这k个后台线程都正常结束,即表示日志文件的索引文件创建成功;若其中任意一个线程在创建过程中发生了错误,则需将其它所有已成功创建的索引文件都删掉,即表明日志文件的索引文件创建失败。执行完创建任务后再将M2中的日志记录写入一个日志文件。在日志查找阶段,对于索引创建成功的日志,可以直接通过索引查找日志;对于索引创建失败的日志,即相当于没有创建索引的日志,则仍需通过遍历的方法查找。索引创建失败出现的概率非常小,因此对整体查找效率的影响也非常小。
在日志查找阶段,用户除了指定目标字段组合及目标值,还可能指定时间区间,尤其是在日志较多时,限定查找的时间区间,能够进一步提高查找效率。对此,在本申请的一种具体实施方式中,还可以设定日志文件的时间点,用于表明日志文件的时间区间。例如,对于已执行完创建索引文件任务的多个日志文件,可以建立如表4所示的查找表:
时间点 日志文件 存在索引文件
datatime<sub>n</sub> xxx<sub>n</sub>.log 1
datatime<sub>n-1</sub> xxx<sub>n-1</sub>.log 1
…… …… ……
datatime<sub>2</sub> xxx<sub>2</sub>.log 0
datatime<sub>1</sub> xxx<sub>1</sub>.log 1
表4
其中时间点datatime可以使用日志文件中的最后一条日志的产生时间点,则据表4可知,日志文件xxx2.log中的日志记录,均产生于(datatime1,datatime2]时间区间内。此外,查找表中可以通过设置“存在索引文件”列,表示日志文件的索引文件是否创建成功,若创建成功,即存在索引文件,则记为1,否则记为0。
在日志查找阶段,假设查找请求指定的时间区间为[begin_time,end_time],通过二分查找,可以在查找表中找到大于begin_time的最早时间点datatimei,和大于end_time的最早时间点datatimej。如果datatimei和datatimej相等,则在datatimei对应的日志文件xxxi.log中进行日志查找。如果datatimei和datatimej不相等,则须在多个日志文件中进行查找,即在xxxi.log日志文件中查找[begin_time,datatimei]区间的日志,在xxxj.log日志文件中查找(datatimej-1,end_time]区间的日志,在xxxk.log日志文件中查找其余的日志,其中i<k<j。
此外,若在查找请求指定的时间区间[begin_time,end_time]中,begin_time大于datatimen,则表明所查找的日志尚暂存在内存中,还未写入日志文件,即需要在内存M1、M2中[begin_time,end_time]区间进行日志查找。为了进一步提高效率,还可以使用一个变量first_time记录M1中写入的第一条日志记录的时间,通过比较first_time与begin_time、end_time的大小关系,即可快速确定是否需要在内存中进行日志查找。
由于设备的存储空间是有限的,随着设备中存储的日志文件的增多,可能还需要删除最早生成的部分日志文件及对应的索引文件,因此,可以采用循环队列的形式实现查找表。假设队列的长度为len,且start指向查找表中第一条记录的位置,end指向最后一条记录的下一位置。删除日志文件和索引文件的同时,从查找表的第一条记录开始,逐条删除对应的记录,并调整start使其始终指向当前的第一条记录。生成新的日志文件和索引文件的同时,在查找表中end指向的位置插入新的记录,并调整end使其始终指向当前最后一条记录的下一位置。由于循环队列的首尾相接,若当前end后移到队列尾部,则下一次后移将直接跳到队列头部。因此,通过查找表确定日志文件时,若start≤end,则可以在[start,end)区间内进行查找;若start>end,则表示end在某一次后移中跳到了队列头部,且此时start指向的位置更接近队列尾部,可以在[start,end+len)区间内进行查找。
相应于上述方法实施例,本申请还提供一种日志索引构建装置,参见图3所示,该装置可以包括:
字段组合确定模块110,用于根据预设的字段组合规则,确定日志文件中至少一个需要创建索引文件的必需字段组合;
字段值获取模块120,用于针对所述日志文件中每条日志记录,获取所述日志记录中字段的值;
字段值拼接模块130,用于将字段值获取模块获取的值,拼接为所述必需字段组合的值;
偏移位置获取模块140,用于获取所述每条日志记录在所述日志文件中的偏移位置;
索引记录创建模块150,用于针对每个字段组合的每个不同值创建索引记录,索引记录中还包括所述每个不同值对应的日志记录的偏移位置;
索引记录写入模块160,用于将同一字段组合的索引记录,写入所述日志文件的一个索引文件中。
在本申请的一种具体实施方式中,参见图4所示,字段组合确定模块110包括:
字段提取子模块111,用于提取所述日志文件中的n个字段;
字段组合确定子模块112,用于针对n个字段对应的2n-1个字段组合,确定
Figure BDA0001382734900000131
个需要创建索引文件的必需字段组合,其中
Figure BDA0001382734900000132
为对
Figure BDA0001382734900000133
的结果向上取整:
其中,由m个字段所构成的字段组合,用于响应针对该字段组合中前x个字段所构成组合的查询请求,其中x=1,2,…,m。
在本申请的一种具体实施方式中,参见图5所示,上述日志索引构建装置还可以包括:
时间点设定模块170,用于:
将所述日志文件中第一条日志记录的产生时间,设定为起始时间点,所述起始时间点用于表明该日志文件中全部日志记录产生的最早时刻;
将所述日志文件中最后一条日志记录的产生时间,设定为终止时间点,所述终止时间点用于表明该日志文件中全部日志记录产生的最晚时刻。
本申请还提供一种基于上述日志索引的日志查找装置,参见图6所示,该装置可以包括:
索引文件查找模块210,用于根据查询请求指定的目标字段组合,查找与目标字段组合对应的目标索引文件;
索引记录查找模块220,用于在所述目标索引文件中,查找包括目标值的索引记录;
日志记录获取模块230,用于根据所述包括目标值的索引记录中的偏移位置,获取日志记录;
查询请求响应模块240,用于利用所获取的日志记录响应所述查询请求。
在本申请的一种具体实施方式中,参见图7所示,索引文件查找模块210包括:
日志文件确定子模块211,用于根据所述时间点,确定查询请求指定的时间区间对应的日志文件;
索引文件查找子模块212,用于在所述对应的日志文件中,所述根据查询请求指定的目标字段组合,查找与目标字段组合对应的目标索引文件。
本申请还提供一种日志查找系统,该系统包括上述的日志索引构建装置以及日志查找装置。如图8所示,索引文件查找模块210利用索引记录写入模块160创建的索引进行日志查找。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置或系统实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本申请方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本申请的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (10)

1.一种日志索引构建方法,其特征在于,所述方法包括:
根据预设的字段组合规则,确定日志文件中需要创建索引文件的至少一个必需字段组合,所述必需字段组合为能够覆盖到所有查找情况的字段组合;
针对所述日志文件中每条日志记录,执行以下操作:获取所述日志记录中多个单字段的值;将多个单字段的值拼接为所述必需字段组合的值;获取所述日志记录在所述日志文件中的偏移位置;
根据获得的必需字段组合的值创建索引记录,其中,将必需字段组合的值相同的日志记录归为一条索引记录,每条索引记录中包括所述必需字段组合的值相同的所有日志记录的偏移位置;
将同一必需字段组合所有不同值的索引记录,写入所述日志文件的一个索引文件中。
2.根据权利要求1所述的方法,其特征在于,所述根据预设的字段组合规则,确定日志文件中需要创建索引文件的至少一个必需字段组合,包括:
提取所述日志文件中的n个字段;
针对n个字段对应的2n-1个字段组合,确定
Figure FDA0002556059140000011
个需要创建索引文件的必需字段组合,其中
Figure FDA0002556059140000012
为对
Figure FDA0002556059140000013
的结果向上取整:
其中,由m个字段所构成的字段组合,用于响应针对该字段组合中前x个字段所构成组合的查询请求,其中x=1,2,…,m。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述日志文件中第一条日志记录的产生时间,设定为起始时间点,所述起始时间点用于表明该日志文件中全部日志记录产生的最早时刻;
将所述日志文件中最后一条日志记录的产生时间,设定为终止时间点,所述终止时间点用于表明该日志文件中全部日志记录产生的最晚时刻。
4.一种基于权利要求1至3任一项所述日志索引构建方法的日志查找方法,其特征在于,所述方法包括:
根据查询请求指定的目标字段组合,查找与目标字段组合对应的目标索引文件;
在所述目标索引文件中,查找包括目标值的索引记录;
根据所述包括目标值的索引记录中的偏移位置,获取日志记录;
利用所获取的日志记录响应所述查询请求。
5.根据权利要求4所述的方法,其特征在于,
将所述日志文件中第一条或最后一条日志记录的产生时间,设定为日志文件时间点;
所述根据查询请求指定的目标字段组合,查找与目标字段组合对应的目标索引文件包括:
根据所述时间点,确定查询请求指定的时间区间对应的日志文件;
在所述对应的日志文件中,所述根据查询请求指定的目标字段组合,查找与目标字段组合对应的目标索引文件。
6.根据权利要求4所述的方法,其特征在于,当所述目标字段组合不为必需字段组合时,所述目标值包括:
查询请求指定的目标值的一个特定排列与多个缺省值拼接成的多个值,所述多个缺省值为所述目标字段组合缺省部分的所有取值。
7.一种日志索引构建装置,其特征在于,所述装置包括:
字段组合确定模块,用于根据预设的字段组合规则,确定日志文件中需要创建索引文件的至少一个必需字段组合,所述必需字段组合为能够覆盖到所有查找情况的字段组合;
字段值获取模块,用于针对所述日志文件中每条日志记录,获取所述日志记录中多个单字段的值;
字段值拼接模块,用于将多个单字段值获取模块获取的值,拼接为所述必需字段组合的值;
偏移位置获取模块,用于获取所述每条日志记录在所述日志文件中的偏移位置;
索引记录创建模块,用于根据获得的必需字段组合的值创建索引记录,其中,将必需字段组合的值相同的日志记录归为一条索引记录,每条索引记录中包括所述必需字段组合的值对应的日志记录的偏移位置;
索引记录写入模块,用于将同一必需字段组合所有不同值的索引记录,写入所述日志文件的一个索引文件中。
8.根据权利要求7所述的装置,其特征在于,所述字段组合确定模块,包括:
字段提取子模块,用于提取所述日志文件中的n个字段;
字段组合确定子模块,用于针对n个字段对应的2n-1个字段组合,确定
Figure FDA0002556059140000031
个需要创建索引文件的必需字段组合,其中
Figure FDA0002556059140000032
为对
Figure FDA0002556059140000033
的结果向上取整:
其中,由m个字段所构成的字段组合,用于响应针对该字段组合中前x个字段所构成组合的查询请求,其中x=1,2,…,m。
9.根据权利要求7所述的装置,其特征在于,所述装置还包括时间点设定模块,用于:
将所述日志文件中第一条或最后一条日志记录的产生时间,设定为起始时间点,所述起始时间点用于表明该日志文件中全部日志记录产生的最早时刻;
将所述日志文件中最后一条日志记录的产生时间,设定为终止时间点,所述终止时间点用于表明该日志文件中全部日志记录产生的最晚时刻。
10.一种基于权利要求7至9任一项所述日志索引构建装置的日志查找装置,其特征在于,所述装置包括:
索引文件查找模块,用于根据查询请求指定的目标字段组合,查找与目标字段组合对应的目标索引文件;
索引记录查找模块,用于在所述目标索引文件中,查找包括目标值的索引记录;
日志记录获取模块,用于根据所述包括目标值的索引记录中的偏移位置,获取日志记录;
查询请求响应模块,用于利用所获取的日志记录响应所述查询请求。
CN201710711234.0A 2017-08-18 2017-08-18 一种日志索引构建方法及装置 Active CN107688624B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710711234.0A CN107688624B (zh) 2017-08-18 2017-08-18 一种日志索引构建方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710711234.0A CN107688624B (zh) 2017-08-18 2017-08-18 一种日志索引构建方法及装置

Publications (2)

Publication Number Publication Date
CN107688624A CN107688624A (zh) 2018-02-13
CN107688624B true CN107688624B (zh) 2020-12-29

Family

ID=61153442

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710711234.0A Active CN107688624B (zh) 2017-08-18 2017-08-18 一种日志索引构建方法及装置

Country Status (1)

Country Link
CN (1) CN107688624B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112612760A (zh) * 2020-12-30 2021-04-06 中国农业银行股份有限公司 一种日志消息输出方法及装置
CN112800006B (zh) * 2021-01-27 2023-05-26 杭州迪普科技股份有限公司 用于网络设备的日志存储方法及装置

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101079074A (zh) * 2007-07-26 2007-11-28 杭州华三通信技术有限公司 一种数据存储与检索的方法及系统
CN101187936A (zh) * 2007-12-07 2008-05-28 圣诺网络技术(上海)有限公司 一种日志数据的存储方法和装置
CN101197700A (zh) * 2006-12-05 2008-06-11 阿里巴巴公司 提供日志服务的方法及系统
CN101453378A (zh) * 2008-12-30 2009-06-10 杭州华三通信技术有限公司 日志转储与审计的方法和系统
CN101483553A (zh) * 2009-02-24 2009-07-15 中兴通讯股份有限公司 一种用户网络行为审计装置及方法
CN101639848A (zh) * 2009-06-01 2010-02-03 北京四维图新科技股份有限公司 一种空间数据引擎及应用其管理空间数据的方法
KR101123846B1 (ko) * 2010-09-07 2012-03-16 시큐아이닷컴 주식회사 트래픽 로그 저장 및 검색 방법 및 이를 이용한 방화벽 시스템
CN102929936A (zh) * 2012-09-26 2013-02-13 东软集团股份有限公司 日志记录方法、日志查询方法及系统
CN104050269A (zh) * 2014-06-23 2014-09-17 上海帝联信息科技股份有限公司 日志压缩方法及装置、解压缩方法及装置
CN106649627A (zh) * 2016-12-06 2017-05-10 杭州迪普科技股份有限公司 一种日志查找的方法和装置

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101197700A (zh) * 2006-12-05 2008-06-11 阿里巴巴公司 提供日志服务的方法及系统
CN101079074A (zh) * 2007-07-26 2007-11-28 杭州华三通信技术有限公司 一种数据存储与检索的方法及系统
CN101187936A (zh) * 2007-12-07 2008-05-28 圣诺网络技术(上海)有限公司 一种日志数据的存储方法和装置
CN101453378A (zh) * 2008-12-30 2009-06-10 杭州华三通信技术有限公司 日志转储与审计的方法和系统
CN101483553A (zh) * 2009-02-24 2009-07-15 中兴通讯股份有限公司 一种用户网络行为审计装置及方法
CN101639848A (zh) * 2009-06-01 2010-02-03 北京四维图新科技股份有限公司 一种空间数据引擎及应用其管理空间数据的方法
KR101123846B1 (ko) * 2010-09-07 2012-03-16 시큐아이닷컴 주식회사 트래픽 로그 저장 및 검색 방법 및 이를 이용한 방화벽 시스템
CN102929936A (zh) * 2012-09-26 2013-02-13 东软集团股份有限公司 日志记录方法、日志查询方法及系统
CN104050269A (zh) * 2014-06-23 2014-09-17 上海帝联信息科技股份有限公司 日志压缩方法及装置、解压缩方法及装置
CN106649627A (zh) * 2016-12-06 2017-05-10 杭州迪普科技股份有限公司 一种日志查找的方法和装置

Also Published As

Publication number Publication date
CN107688624A (zh) 2018-02-13

Similar Documents

Publication Publication Date Title
CN108089893B (zh) 冗余资源的确定方法、装置、终端设备与存储介质
EP3678346A1 (en) Blockchain smart contract verification method and apparatus, and storage medium
CN108647151B (zh) 一种全闪系统元数据落盘方法、装置、设备及存储介质
JP4669067B2 (ja) 動的フラグメントマッピング
CN112100071B (zh) 测试用例生成方法、装置、计算机设备和存储介质
CN110147204B (zh) 一种元数据落盘方法、装置、系统及计算机可读存储介质
CN108268592B (zh) 基于json数据的筛选方法、装置、服务器和存储介质
CN105677683A (zh) 批量数据查询方法和装置
JP2021518021A (ja) データ処理方法、装置及びコンピュータ読み取り可能な記憶媒体
CN110597852A (zh) 数据处理方法、装置、终端及存储介质
CN105426375A (zh) 一种关系网络的计算方法及装置
CN107688624B (zh) 一种日志索引构建方法及装置
CN111026709B (zh) 基于集群访问的数据处理方法及装置
CN108038253B (zh) 一种日志查询的处理方法及装置
CN111984591A (zh) 文件存储、读取方法、装置、设备及计算机可读存储介质
CN112463735B (zh) 一种大体积json文件拆分并按需请求的方法
CN114691039A (zh) 数据处理方法、装置、电子设备及存储介质
CN107203550B (zh) 一种数据处理方法和数据库服务器
CN108984780B (zh) 基于支持重复键值树数据结构管理磁盘数据的方法和装置
CN113885789A (zh) 元数据修复后校验数据一致性的方法、系统、设备及介质
CN109947429B (zh) 数据处理方法及装置
CN110413617B (zh) 一种根据数据量的大小动态调节哈希表组的方法
CN113986576A (zh) 消息处理方法及装置
CN113051301A (zh) 一种对象存储方法、系统及设备
CN109977097B (zh) 一种基于数据库的网络配置管理方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210611

Address after: 310051 05, room A, 11 floor, Chung Cai mansion, 68 Tong Xing Road, Binjiang District, Hangzhou, Zhejiang.

Patentee after: Hangzhou Dip Information Technology Co.,Ltd.

Address before: 6 / F, Zhongcai building, 68 Tonghe Road, Binjiang District, Hangzhou City, Zhejiang Province

Patentee before: Hangzhou DPtech Technologies Co.,Ltd.