一种日志数据排序的方法及装置与流程

文档序号:13804802阅读:275来源:国知局
一种日志数据排序的方法及装置与流程

本发明涉及计算机技术领域,尤其涉及一种日志数据排序的方法及装置。



背景技术:

随着计算机技术的快速发展,人们的生活也越来越依赖各种互联网应用产品,在用户使用互联网应用产品的过程中将产生大量的数据,为了保证互联网应用产品运营过程中的网络安全,日志数据发挥了重要的作用。如由各种操作系统、应用程序、设备和安全产品的日志数据能够帮助互联网产品运营商发现和避开灾难,并且找到安全事件的根本原因,因此,互联网产品运营商需要对大量的日志数据进行读取分析。现有技术中对日志数据的存储方式往往依据时间顺序排序后存储,使得日志数据为大致有序的日志,例如,登录日志中大致有序的日志为:登录日志的每一行是一条登录的信息,并以登录时间作为第一个字段,由于部分日志的时间可能会存在日志时间和所在行数不匹配的现象,因此大致有序意思是随着行数的增长,时间字段是大致随之增长的。现有技术中,在大型网站在运行过程中记录每一步操作的细节作为日志数据,其中,如登录日志中需要记录每次登录的登录时间、登录用户和登录设备等信息,日志读取时通过系统命令,如利用linux操作系统中的sort(排序)命令来制定日志文件,即可输出排好序的日志数据。

在实现本发明过程中,发明人发现现有技术中至少存在如下问题:当登录日志的数据量巨大时,对登录日志的随机读取将变得非常困难,只有顺序一行行的读取才能保证读取操作的性能,虽然通过该方式读取日志数据的操作简单,但是无法适用于日志文件中数据量巨大的情况。



技术实现要素:

本发明实施例提供一种日志数据排序的方法及装置,实现了快速、简单地对巨大数量的数据进行排序。

一方面,本发明实施例提供了一种日志数据排序的方法,包括:

针对排序周期内每一个最小时间单元,按照时间顺序依次创建各个最小时间单元分别对应的一个中间存储文件,得到中间存储文件集合;

获取日志文件,顺序读取所述日志文件中的每一条日志数据,针对每一条日志数据,执行如下操作:解析读取到的当前日志数据的记录时间;确定中间存储文件集合中与解析出的记录时间所属最小时间单元相对应的中间存储文件;并将读取到的当前日志数据存储至确定出的中间存储文件中;

按照时间顺序依次读取各个中间存储文件,并将读取到的各个中间存储文件中的每一条日志数据依次存储至日志存储文件中。

另一方面,本发明实施例提供了一种日志数据排序的装置,包括:

创建单元,用于针对排序周期内每一个最小时间单元,按照时间顺序依次创建各个最小时间单元分别对应的一个中间存储文件,得到中间存储文件集合;

获取单元,用于获取日志文件,顺序读取所述日志文件中的每一条日志数据,针对每一条日志数据,执行如下操作:解析读取到的当前日志数据的记录时间;确定中间存储文件集合中与解析出的记录时间所属最小时间单元相对应的中间存储文件;并将读取到的当前日志数据存储至确定出的中间存储文件中;

读取及存储单元,用于按照时间顺序依次读取各个中间存储文件,并将读取到的各个中间存储文件中的每一条日志数据依次存储至日志存储文件中。

上述技术方案具有如下有益效果:实现了仅需操作一条日志数据所需的内存,即可顺序将预定时长内的全部日志数据顺序存储至各个待存储文件中,避免了同时对数据量巨大的日志数据进行存储时需要大量的内存而导致数据处理缓慢的情况;同时,实现了仅需要少量的内存即可对大致有序的巨大数量的日志数据快速、简单地进行排序,进一步地,提高了数据读写的效率,降低了日志数据的维护成本。

附图说明

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

图1为本发明实施例中一种日志数据排序的方法流程图;

图2为本发明实施例中一种日志数据排序的装置结构示意图。

具体实施方式

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

如图1所示,为本发明实施例中一种日志数据排序的方法流程图,包括:

101、针对排序周期内每一个最小时间单元,按照时间顺序依次创建各个最小时间单元分别对应的一个中间存储文件,得到中间存储文件集合;

102、获取日志文件,顺序读取所述日志文件中的每一条日志数据,针对每一条日志数据,执行如下操作:解析读取到的当前日志数据的记录时间;确定中间存储文件集合中与解析出的记录时间所属最小时间单元相对应的中间存储文件;并将读取到的当前日志数据存储至确定出的中间存储文件中;

103、按照时间顺序依次读取各个中间存储文件,并将读取到的各个中间存储文件中的每一条日志数据依次存储至日志存储文件中。

优选地,所述解析读取到的当前日志数据的记录时间,包括:

将读取到的当前日志数据的记录时间换算成与所述最小时间单元的时间单位相匹配的时间序列数;具体地:确定读取到的当前日志数据的记录时间中与所述排序周期内对应的时间值;将所述时间值换算成与所述最小时间单元的时间单位相匹配的时间序列数。

优选地,所述确定中间存储文件集合中与解析出的记录时间所属最小时间单元相对应的中间存储文件,并将读取到的所述当前日志数据存储至确定出的中间存储文件中,包括:

所述中间存储文件集合中各个中间存储文件按照时间顺序依次编号,每一个中间存储文件对应唯一的文件序列号;

根据所述当前日志数据的记录时间换算出的时间序列数,在中间存储文件集合中确定文件序列号与所述时间序列数相一致的中间存储文件,并将读取到的所述当前日志数据存储至确定出的中间存储文件中。

优选地,所述每一条日志数据包括日志数据的记录时间、用户的账号信息、用户设备的标识信息、用户发送请求的方式、用户发送请求的网络地址和用户发送请求的浏览器信息。

可选地,还包括:

接收日志读取的请求命令,从所述日志存储文件中读取与所述请求命令相匹配的日志数据。

如图2所示,为本发明实施例中一种日志数据排序的装置结构示意图,包括:

创建单元21,用于针对排序周期内每一个最小时间单元,按照时间顺序依次创建各个最小时间单元分别对应的一个中间存储文件,得到中间存储文件集合;

获取单元22,用于获取日志文件,顺序读取所述日志文件中的每一条日志数据,针对每一条日志数据,执行如下操作:解析读取到的当前日志数据的记录时间;确定中间存储文件集合中与解析出的记录时间所属最小时间单元相对应的中间存储文件;并将读取到的当前日志数据存储至确定出的中间存储文件中;

读取及存储单元23,用于按照时间顺序依次读取各个中间存储文件,并将读取到的各个中间存储文件中的每一条日志数据依次存储至日志存储文件中。

优选地,所述获取单元,包括:

换算模块,用于将读取到的当前日志数据的记录时间换算成与所述最小时间单元的时间单位相匹配的时间序列数。

优选地,所述获取单元,包括:

编号模块,用于所述中间存储文件集合中各个中间存储文件按照时间顺序依次编号,每一个中间存储文件对应唯一的文件序列号;

存储模块,用于根据所述当前日志数据的记录时间换算出的时间序列数,在中间存储文件集合中确定文件序列号与所述时间序列数相一致的中间存储文件,并将读取到的所述当前日志数据存储至确定出的中间存储文件中。

优选地,所述每一条日志数据包括日志数据的记录时间、用户的账号信息、用户设备的标识信息、用户发送请求的方式、用户发送请求的网络地址和用户发送请求的浏览器信息。

可选地,还包括:

接收及读取单元,用于接收日志读取的请求命令,从所述日志存储文件中读取与所述请求命令相匹配的日志数据。

本发明实施例上述技术方案具有如下有益效果:实现了仅需操作一条日志数据所需的内存,即可顺序将预定时长内的全部日志数据顺序存储至各个待存储文件中,避免了同时对数据量巨大的日志数据进行存储时需要大量的内存而导致数据处理缓慢的情况;同时,实现了仅需要少量的内存即可对大致有序的巨大数量的日志数据快速、简单地进行排序,进一步地,提高了数据读写的效率,降低了日志数据的维护成本。

以下结合应用实例对本发明实施例上述技术方案进行详细说明:

本发明应用实例旨在实现快速、简单地对巨大数量的数据进行排序。

如图1所示,其中,每一条日志数据包括日志数据的记录时间、用户的账号信息、用户设备的标识信息、用户发送请求的方式、用户发送请求的网络地址和用户发送请求的浏览器信息;其中,所述最小时间单元为所述日志文件中记录日志的时间中的最小时间单元。

例如,排序周期,如为每天的24小时,从每天的“00:00:00”至“23:59:59”,根据日志文件中记录日志的时间中的最小时间单元为1秒,并根据24小时内的时间顺序,依次创建86400个最小时间单元(即每一秒)分别对应的一个中间存储文件,得到中间存储文件集合;获取日志文件,如a.log文件,顺序读取a.log文件中的每一条日志数据,针对每一条日志数据,执行如下操作:解析读取到的当前日志数据的记录时间,随后,根据解析后的当前日志数据的记录时间,确定86400个中间存储文件中与解析出的当前日志数据的记录时间所属最小时间单元相对应的中间存储文件,并将读取到的当前日志数据存储至确定出的中间存储文件中;按照时间顺序依次读取各个中间存储文件中的每一条日志数据,并将读取到的各个中间存储文件中的每一条日志数据依次以单独行存储至日志存储文件中,如c.log。

在一优选实施例中,步骤102获取日志文件,顺序读取所述日志文件中的每一条日志数据,针对每一条日志数据,执行如下操作:解析读取到的当前日志数据的记录时间;确定中间存储文件集合中与解析出的记录时间所属最小时间单元相对应的中间存储文件;并将读取到的当前日志数据存储至确定出的中间存储文件中。

其中,将读取到的当前日志数据的记录时间换算成与所述最小时间单元的时间单位相匹配的时间序列数,具体包括:确定读取到的当前日志数据的记录时间中与所述排序周期内对应的时间值,并将所述时间值换算成与所述最小时间单元的时间单位相匹配的时间序列数。

例如,排序周期,如为每天的24小时,日志文件中记录日志的时间中的最小时间单元为1秒,根据24小时内的时间顺序,依次创建86400个最小时间单元(即每一秒)分别对应的一个中间存储文件,得到中间存储文件集合;获取日志文件,如a.log文件,顺序读取a.log文件中的每一条日志数据,针对每一条日志数据,执行如下操作:读取到的当前日志数据的记录时间,如“2017-9-108:10:20”,确定读取到的当前日志数据的记录时间“2017-9-108:10:20”中与排序周期24小时内对应的时间值为“08:10:20”,随后根据最小时间单元为1秒,将“08:10:20”换算成与最小间单元的时间单位“秒”相匹配的时间序列数,时间序列数=h*24*60+m*60+s,其中,h为小时数,m为分钟数,s为秒数,h、m和s均为大于等于0的正整数,则计算“08:10:20”对应的时间序列数=8*24*60+10*60+20,得到“08:10:20”对应的时间序列数为12140。

在一优选实施例中,步骤102中所述确定中间存储文件集合中与解析出的记录时间所属最小时间单元相对应的中间存储文件,并将读取到的所述当前日志数据存储至确定出的中间存储文件中,包括:所述中间存储文件集合中各个中间存储文件按照时间顺序依次编号,每一个中间存储文件对应唯一的文件序列号;根据所述当前日志数据的记录时间换算出的时间序列数,在中间存储文件集合中确定文件序列号与所述时间序列数相一致的中间存储文件,并将读取到的所述当前日志数据存储至确定出的中间存储文件中。

例如,接上例,将中间存储文件集合中各个中间存储文件按照时间顺序依次编号,每一个中间存储文件对应唯一的文件序列号,86400个中间存储文件的文件序列号依次如为b0,b1,b2…b86399,根据解析得到的时间序列数为12140,在排序周期24小时内的中间存储文件集合中确定与时间序列数12140相一致的中间存储文件的文件序列号为b12140,并将读取到的当前日志数据存储至确定出的文件序列号为b12140的中间存储文件中。

在一优选实施例中,该方法还包括:接收日志读取的请求命令,从所述日志存储文件中读取与所述请求命令相匹配的日志数据。

例如,当接收到日志读取的请求命令,如“读取2017-9-103:00:00~2017-9-104:00:00的日志数据”,若日志存储文件d.log中存储2017-9-1的日志数据,d.log中存储的日志数据的记录时间随着行数的增长而单调不递减。则从日志存储文件d.log中读取时间值在03:00:00~04:00:00之间的若干行日志数据。

本发明实施例提供了一种日志数据排序的装置,可以实现上述提供的方法实施例,具体功能实现请参见方法实施例中的说明,在此不再赘述。

应该明白,公开的过程中的步骤的特定顺序或层次是示例性方法的实例。基于设计偏好,应该理解,过程中的步骤的特定顺序或层次可以在不脱离本公开的保护范围的情况下得到重新安排。所附的方法权利要求以示例性的顺序给出了各种步骤的要素,并且不是要限于所述的特定顺序或层次。

在上述的详细描述中,各种特征一起组合在单个的实施方案中,以简化本公开。不应该将这种公开方法解释为反映了这样的意图,即,所要求保护的主题的实施方案需要比清楚地在每个权利要求中所陈述的特征更多的特征。相反,如所附的权利要求书所反映的那样,本发明处于比所公开的单个实施方案的全部特征少的状态。因此,所附的权利要求书特此清楚地被并入详细描述中,其中每项权利要求独自作为本发明单独的优选实施方案。

为使本领域内的任何技术人员能够实现或者使用本发明,上面对所公开实施例进行了描述。对于本领域技术人员来说;这些实施例的各种修改方式都是显而易见的,并且本文定义的一般原理也可以在不脱离本公开的精神和保护范围的基础上适用于其它实施例。因此,本公开并不限于本文给出的实施例,而是与本申请公开的原理和新颖性特征的最广范围相一致。

上文的描述包括一个或多个实施例的举例。当然,为了描述上述实施例而描述部件或方法的所有可能的结合是不可能的,但是本领域普通技术人员应该认识到,各个实施例可以做进一步的组合和排列。因此,本文中描述的实施例旨在涵盖落入所附权利要求书的保护范围内的所有这样的改变、修改和变型。此外,就说明书或权利要求书中使用的术语“包含”,该词的涵盖方式类似于术语“包括”,就如同“包括,”在权利要求中用作衔接词所解释的那样。此外,使用在权利要求书的说明书中的任何一个术语“或者”是要表示“非排它性的或者”。

本领域技术人员还可以了解到本发明实施例列出的各种说明性逻辑块(illustrativelogicalblock),单元,和步骤可以通过电子硬件、电脑软件,或两者的结合进行实现。为清楚展示硬件和软件的可替换性(interchangeability),上述的各种说明性部件(illustrativecomponents),单元和步骤已经通用地描述了它们的功能。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。

本发明实施例中所描述的各种说明性的逻辑块,或单元都可以通过通用处理器,数字信号处理器,专用集成电路(asic),现场可编程门阵列或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。

本发明实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件模块、或者这两者的结合。软件模块可以存储于ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可移动磁盘、cd-rom或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于asic中,asic可以设置于用户终端中。可选地,处理器和存储媒介也可以设置于用户终端中的不同的部件中。

在一个或多个示例性的设计中,本发明实施例所描述的上述功能可以在硬件、软件、固件或这三者的任意组合来实现。如果在软件中实现,这些功能可以存储与电脑可读的媒介上,或以一个或多个指令或代码形式传输于电脑可读的媒介上。电脑可读媒介包括电脑存储媒介和便于使得让电脑程序从一个地方转移到其它地方的通信媒介。存储媒介可以是任何通用或特殊电脑可以接入访问的可用媒体。例如,这样的电脑可读媒体可以包括但不限于ram、rom、eeprom、cd-rom或其它光盘存储、磁盘存储或其它磁性存储装置,或其它任何可以用于承载或存储以指令或数据结构和其它可被通用或特殊电脑、或通用或特殊处理器读取形式的程序代码的媒介。此外,任何连接都可以被适当地定义为电脑可读媒介,例如,如果软件是从一个网站站点、服务器或其它远程资源通过一个同轴电缆、光纤电缆、双绞线、数字用户线(dsl)或以例如红外、无线和微波等无线方式传输的也被包含在所定义的电脑可读媒介中。所述的碟片(disk)和磁盘(disc)包括压缩磁盘、镭射盘、光盘、dvd、软盘和蓝光光盘,磁盘通常以磁性复制数据,而碟片通常以激光进行光学复制数据。上述的组合也可以包含在电脑可读媒介中。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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