日志文件存储方法及装置与流程

文档序号:12665125阅读:187来源:国知局
日志文件存储方法及装置与流程

本发明属于日志文件处理技术领域,特别是涉及一种日志文件存储方法及装置。



背景技术:

内容分发网络(Content Delivery Net work,CDN)服务提供商是通过大量的边缘节点服务器来为客户提供加速服务。客户端的每一次访问,都会产生对应的日志文件。通过对日志文件进行分析处理,可以获取到有价值的信息,从而可以更好地为客户提供服务。

Apache Hadoop是一款支持数据密集型分布式应用并以Apache 2.0许可协议发布的开源软件框架,且支持在商品硬件构建的大型集群上运行的应用程序。Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)是Hadoop的一个核心组件,通过将多台服务器构建一个基于网络的分布式文件系统,实现海量数据的存储。

但是,现有技术中的基于HDFS的日志文件存储方法,存在着运维成本高的问题。



技术实现要素:

本发明实施例解决的问题是如何在日志文件进行存储时节省开销。

为解决上述问题,本发明实施例提供了一种日志文件存储方法,所述方法包括:获取指定目录下的本地日志文件;将所获取的本地日志文件写入对应的云端文件;当确定所获取的本地日志文件写入对应的云端文件失败时,将对应的云端文件恢复至写入前的状态。

可选地,所述将所获取的本地日志文件写入对应的云端文件,包括:分别采用二进制格式打开指定的本地日志文件和对应的云端文件;当确定采用二进制格式打开指定的本地日志文件和对应的云端文件成功时,将所述本地日志文件写入所述云端文件的末尾。

可选地,所述对应的云端文件的大小的信息,为在将所获取的本地日志文件写入对应的云端文件之前获取。

可选地,当确定所获取的本地日志文件写入对应的云端文件失败时,所述方法还包括:为所述本地日志文件添加出错标记,并记录所述对应的云端文件写入前的大小的信息;当再次遍历至所述本地日志文件且检测到所述出错标记时,获取所述对应的云端文件写入前的大小的信息;基于所述对应的云端文件写入前的大小的信息,将对应的云端文件恢复至写入前的状态;当将对应的云端文件恢复至写入前的状态时,重新执行所述将所述本地日志文件写入对应的云端文件的操作。

可选地,所述基于所述对应的云端文件写入前的大小的信息,将对应的云端文件恢复至写入前的状态,包括:删除对应的云端文件的末尾的文件,以将对应的云端文件恢复至对应的云端文件写入前的大小。

本发明实施例还提供了一种日志文件存储装置,所述装置包括:第一获取单元,适于获取指定目录下的本地日志文件;发送单元,适于将所获取的本地日志文件写入对应的云端文件;恢复单元,适于当确定所获取的本地日志文件写入对应的云端文件失败时,将对应的云端文件恢复至写入前的状态。

可选地,所述发送单元,适于分别采用二进制格式打开指定的本地日志文件和对应的云端文件;当确定采用二进制格式打开指定的本地日志文件和对应的云端文件成功时,将所述本地日志文件写入所述云端文件的末尾。

可选地,所述装置还包括:第二获取单元,适于在将所获取的本地日志文件写入对应的云端文件之前获取对应的云端文件的大小的信息。

可选地,所述装置还包括:标记单元,适于为所述本地日志文件添加出错标记,并记录所述对应的云端文件写入前的大小的信息;恢复单元,适于当再次遍历至所述本地日志文件且检测到所述出错标记时,获取所述对应的云端文件写入前的大小的信息;基于所述对应的云端文件写入前的大小的信息,将对应的云端文件恢复至写入前的状态;重试单元,适于当将对应的云端文件恢复至写入前的状态时,重新执行所述将所述本地日志文件写入对应的云端文件的操作

可选地,所述恢复单元,适于删除对应的云端文件的末尾的文件,以将对应的云端文件恢复至对应的云端文件写入前的大小。

与现有技术相比,本发明的技术方案具有以下的优点:

上述的方案,通过在确定将本地日志文件写入对应的云端文件失败时,将对应的云端文件自动恢复至写入前的大小,而无需人工手动删除写入失败本地日志文件,可以节省由于日志文件写入失败进行删除所耗费的时间人力资源,因而可以提高效率,并节约资源。

附图说明

图1是本发明实施例中一种的日志文件存储方法的流程图;

图2是本发明实施例中另一种日志文件存储方法的流程图;

图3是本发明实施例中如何对缓存周期内的日志文件进行压缩合并得到对应的本地日志文件的流程图;

图4是本发明实施例中的一种日志文件存储装置的结构示意图。

具体实施方式

正如背景技术所言,现有技术中的基于HDFS的日志文件存储方法,在将本地的日志文件写入对应的云端文件失败时,需要人工手动删除写入失败的本地文件。

其中,在向同一个云端文件追加多个本地日志文件且失败时,HDFS提供的文件存储接口在网络连接未断开时支持失败重传。但是,当上传失败的次数达到预设的次数阈值或者网络连接中断时,HDFS将会反馈上传失败的信息,且不会将已经成功上传的不完整的日志内容进行删除。此时,现有一般采用人工手动的方式,将云端文件恢复至写入之前的状态,需要耗费大量的时间和精力,存在着操作复杂且效率低下的问题。

为解决上述问题,本发明实施例中的技术方案通过在确定将本地日志文件写入对应的云端文件失败时,将对应的云端文件自动恢复至写入前的大小,可以节省由于日志文件写入失败进行删除所耗费的时间人力资源,因而可以提高效率,并节约资源。

为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。

图1是本发明实施例中的一种日志文件存储方法的流程图。如图1所示的日志文件存储方法,可以包括:

步骤S101:获取指定目录下的本地日志文件。

在具体实施中,指定目录下的本地日志文件为待发送至云端进行存储的日志文件。

步骤S102:将所获取的本地日志文件写入对应的云端文件。

在具体实施中,对应的云端文件为存储在云端服务器中,且与所获取的本地日志文件具有相同域名。

步骤S103:当确定所获取的本地日志文件写入对应的云端文件失败时,将对应的云端文件恢复至写入前的状态。

在具体实施中,将对应的云端文件恢复至写入前的状态,也即将仅写入部分的所获取的本地日志文件的云端文件恢复至未写入所获取的本地日志文件时的状态,包括内容和大小。

上述的方案,通过在确定将本地日志文件写入对应的云端文件失败时,将对应的云端文件自动恢复至写入前的大小,而无需人工手动删除写入失败本地日志文件,可以节省由于日志文件写入失败进行删除所耗费的时间人力资源,因而可以提高效率,并节约资源。

下面将结合图2对本发明实施例中的日志文件存储方法进行详细的描述。

参见图2,本发明实施例中的日志文件存储方法适于将服务器中存储的日志文件发送至云端进行存储,具体可以采用如下的步骤实现:

步骤S201:获取指定目录下的本地日志文件。

在本发明一实施例中,所获取的指定目录的本地日志文件可以是实时接收到预处理后的日志文件。例如,远程服务器在获取到边缘节点服务器产生的日志文件时,可以将所获取的日志文件按照域名和预设的第一时间粒度进行合并,并将合并后得到的日志文件发送至本发明实施例中的服务器中并存储。其中,第一时间粒度可以根据实际的需要进行设置,如5分钟。

在本发明另一实施例中,指定的本地日志文件是将对应的缓存时间周期内所接收的远程服务器发送的经过预处理的日志文件进行压缩合并得到的GZIP格式的日志文件,具体请参见图3。

步骤S202:以二进制格式打开所获取的指定目录下的文件。

在本发明一实施例中,为了确保在将所获取的本地存储的指定目录下的文件写入云端服务器时不被破坏,可以采用二进制格式打开所获取的指定目录下的文件。

当然,也可以采用现有技术中的其他方式打开所获取的指定目录下的文件,只要确保在将所获取的本地存储的指定目录下的文件写入云端服务器时不被破坏即可。

步骤S203:以二进制格式打开存储在云端的对应的云端文件。

在具体实施中,当将所获取的指定目录下的文件采用二进制格式打开成功时,可以同样采用二进制格式打开存储在云端的对应的云端文件。其中,对应的云端文件与所获取的本地日志文件具有相同的域名。

步骤S204:将所获取的指定目录下的文件写入对应的云端文件。

在具体实施中,将所获取的指定目录下的文件写入对应的云端文件,也即将所获取的指定目录下的文件添加至对应的云端文件的末尾。

步骤S205:判断是否成功将所获取的指定目录下的文件写入对应的云端文件;当判断结果为是时,可以执行步骤S206;反之,则可以执行步骤207。

步骤S206:删除所获取的指定目录下的所述本地日志文件。

在具体实施中,当确定将所获取的指定目录下的文件写入对应的云端文件成功时,便可以将指定目录下的文件删除,也即删除对应的本地文件,以节约存储空间。

步骤S207:为所述本地日志文件添加出错标记,并记录所述对应的云端文件写入前的大小的信息,并等待下一次上传。

在具体实施中,所述对应的云端文件写入前的大小的信息可以在将指定的本地日志文件写入对应的云端文件之前获取。当将指定的本地日志文件写入对应的云端文件失败时,可以所述本地日志文件添加对应的出错标记,并记录对应的云端文件写入前的大小的信息,以等待下一次上传。

在具体实施中,对应的本地日志文件写入对应的云端文件失败的原因通常由于网络通信质量差的原因造成。因此,当每次将本地日志文件写入对应的云端文件失败时,可以重新选取其他网络通信质量好的时间进行下一次上传。其中,当将上传失败的本地日志文件再次上传时,可以通过所述出错标记,判断是否需要将对应的云端文件恢复至写入前的状态。当确定存储出错标记时,可以获取所记录的对应的云端文件写入前的大小的信息,并将写入至云端文件末尾的部分本地日志文件执行删除,从而将对应的云端文件恢复至写入前的状态,并重新执行所述将所获取的指定目录下的本地日志文件写入对应的云端文件,也即从步骤S201开始执行。

步骤S208:判断指定目录下的本地日志文件是否遍历完成;当判断结果为是时,可以结束本次的上传操作;反之,则可以执行步骤S209。

步骤S209:获取所述指定目录下的下一本地日志文件。

在具体实施中,当确定指定目录下的当前文件写入对应的云端文件成功并删除之后,可以接着获取指定目录下的下一本地日志文件并从步骤S202开始执行,直至指定目录下的文件遍历完成。

参见图3,本发明实施例中的一种日志文件存储方法,适于将边缘节点服务器产生的日志文件发送至云端进行存储,具体可以采用如下的步骤实现:

步骤S301:在预设的缓存周期内,实时获取缓存目录下的日志文件。

在具体实施中,边缘节点服务器所产生的日志文件首先由对应的远程服务器将边缘节点服务器所产生的日志文件进行预处理,然后再发送至本发明实施例中的服务器中进行存储。换言之,对应的缓存目录下的日志文件也即待压缩合并至存储在本地的对应的本地日志文件的日志文件。

例如,远程服务器在获取到边缘节点服务器产生的日志文件时,首先将所获取的日志文件采用对应的域名和时间戳进行重命名,并将重命名后得到的日志文件发送至本发明实施例中的服务器中并存储至对应的缓存目录下。

步骤S302:采用预设的压缩格式分别打开所获取的缓存目录下的日志文件和对应的本地日志文件。

在具体实施中,为了确保压缩合并得到的日志文件在解压缩时不被破坏,在本发明一实施例中,所述预设的压缩格式为GZIP格式。

在具体实施中,对应的本地日志文件为存储在本地且待发送至云端进行存储的日志文件。在本发明一实施例中,存储在本地的本地日志文件采用对应的日志文件的域名和预设的时间段进行命名,以将对应的缓存周期内实时接收到的域名相同且时间戳位于该时间段内的日志文件压缩合并至对应的本地文件中。换言之,所述所获取的缓存目录下的日志文件与对应的本地日志文件具有相同的域名,且所获取的缓存目录下的日志文件的时间戳位于对应的本地日志文件的时间段内。

步骤S303:当确定所获取的缓存目录下的日志文件和对应的本地日志文件均打开成功时,将所获取的缓存目录下的日志文件写入对应的本地日志文件。

在具体实施中,将所获取的缓存目录下的日志文件写入对应的本地日志文件,也即将所获取的缓存目录下的日志文件写入对应的本地日志文件的末尾。

步骤S304:关闭所获取的缓存目录下存储的日志文件和对应的本地日志文件。

在具体实施中,在将所获取的缓存目录下的日志文件写入对应的本地文件之前,均采用预设的压缩格式打开所获取的缓存目录下的日志文件与对应的本地文件,在将所获取的缓存目录下的日志文件写入对应的本地日志文件成功并关闭后,所得到的对应的本地日志文件即为所述压缩格式的日志文件。

步骤S305:删除所述缓存目录下存储的日志文件。

在具体实施中,当确定将所获取的缓存目录下存储的日志文件压缩合并入对应的本地日志文件成功时,通过将所述缓存目录下存储的该日志文件进行删除,以节省存储空间。

在具体实施中,对于缓存目录下存储的日志文件均可以采用上述的方式存储至本地的日志文件中,直至缓存目录下的全部日志文件存储完毕,并等待接收预设的远程服务器发送的经过预处理后得到新的日志文件。

上述对本发明实施例中的方法进行了详细的描述,下面将对上述的方法对应的装置做介绍。

图4示出了本发明实施例中的一种日志文件存储装置的结构。参见图4,本发明实施例中的一种日志文件存储装置400可以包括第一获取单元401、发送单元402和恢复单元403,其中:

所述第一获取单元401,适于获取指定目录下的本地日志文件。

所述发送单元402,适于将所获取的本地日志文件写入对应的云端文件。

所述恢复单元403,适于当确定所获取的本地日志文件写入对应的云端文件失败时,将对应的云端文件恢复至写入前的状态。

在本发明一实施例中,所述发送单元402,适于分别采用二进制格式打开指定的本地日志文件和对应的云端文件;当确定采用二进制格式打开指定的本地日志文件和对应的云端文件成功时,将所述本地日志文件写入所述云端文件的末尾。

在本发明一实施例中,所述日志文件存储装置400还可以包括第二获取单元404,其中:

所述第二获取单元404,适于在将所获取的本地日志文件写入对应的云端文件之前获取对应的云端文件的大小的信息。

在本发明一实施例中,所述日志文件存储装置400还可以包括标记单元405和重试单元406,其中:

标记单元405,适于为所述本地日志文件添加出错标记,并记录所述对应的云端文件写入前的大小的信息。

所述恢复单元403,适于当再次遍历至所述本地日志文件且检测到所述出错标记时,获取所述对应的云端文件写入前的大小的信息;基于所述对应的云端文件写入前的大小的信息,将对应的云端文件恢复至写入前的状态。在本发明一实施例中,所述恢复单元403,适于删除对应的云端文件的末尾的文件,以将对应的云端文件恢复至对应的云端文件写入前的大小。

重试单元406,适于当将对应的云端文件恢复至写入前的状态时,重新执行所述将所述本地日志文件写入对应的云端文件的操作。

采用本发明实施例中的上述方案,通过在确定将本地日志文件写入对应的云端文件失败时,将对应的云端文件自动恢复至写入前的大小,而无需人工手动删除写入失败本地日志文件,可以节省由于日志文件写入失败进行删除所耗费的时间人力资源,因而可以提高效率并节约资源。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。

以上对本发明实施例的方法及系统做了详细的介绍,本发明并不限于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

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