一种收集日志数据的方法及装置.pdf

上传人:62****3 文档编号:1639585 上传时间:2018-06-30 格式:PDF 页数:16 大小:929.50KB
返回 下载 相关 举报
摘要
申请专利号:

CN201310676525.2

申请日:

2013.12.11

公开号:

CN104714878A

公开日:

2015.06.17

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 11/34申请日:20131211|||公开

IPC分类号:

G06F11/34

主分类号:

G06F11/34

申请人:

阿里巴巴集团控股有限公司

发明人:

周琦; 孙廷韬; 马云雷; 蔡华; 王根国

地址:

英属开曼群岛大开曼资本大厦一座四层847号邮箱

优先权:

专利代理机构:

北京国昊天诚知识产权代理有限公司11315

代理人:

许志勇

PDF下载: PDF下载
内容摘要

本申请公开了一种收集日志数据的方法及装置,属于计算机技术领域。所述方法包括:通过文件变化通知接口监测指定的日志文件系统;获取指定日志文件被写入日志数据的事件;判断所述指定日志文件当前的文件指纹,与所述指定日志文件之前的文件指纹是否一致;如果不一致,则获取并根据所述指定日志文件对应的新文件名、原文件名和原文件偏移量,从所述原文件名对应的日志文件和所述新文件名对应的日志文件中收集日志数据。所述装置包括:监测模块、第一获取模块、第一判断模块和第一收集模块。本发明可以收集到记录在重新命名后的日志文件中的日志数据,使得可以收集到完整齐全的日志数据。

权利要求书

权利要求书
1.  一种收集日志数据的方法,其特征在于,所述方法包括:
通过文件变化通知接口监测指定的日志文件系统;
获取指定日志文件被写入日志数据的事件;
判断所述指定日志文件当前的文件指纹,与所述指定日志文件之前的文件指纹是否一致;
如果不一致,则获取并根据所述指定日志文件对应的新文件名、原文件名和原文件偏移量,从所述原文件名对应的日志文件和所述新文件名对应的日志文件中收集日志数据。

2.  如权利要求1所述的方法,其特征在于,所述通过文件变化通知接口监测指定的日志文件系统之后,还包括:
获取所述指定日志文件被重命名的事件;
记录所述指定日志文件对应的新文件名和原文件名。

3.  如权利要求2所述的方法,其特征在于,所述文件变化通知接口包括:Linux系统中的inotify,windows系统中的文件系统监测FileSystemWatcher;
相应地,所述指定日志文件被写入日志数据的事件包括:inotify中的文件有新的写入in_modify事件,FileSystemWatcher中的变化Changed事件;
相应地,所述指定日志文件被重命名的事件包括:inotify中的文件移出in_move_from事件和文件移入in_move_to事件,FileSystemWatcher中的重命名Renamed事件。

4.  如权利要求2所述的方法,其特征在于,所述获取并根据所述指定日志文件对应的新文件名、原文件名和原文件偏移量,从所述原文件名对应的日志文件和所述新文件名对应的日志文件中收集日志数据,包括:
将所述指定日志文件当前的文件偏移量和文件名分别作为所述原文件偏移量和所述原文件名记录下来;
将所述指定日志文件当前的文件偏移量重置为0,收集所述指定日志文 件中的日志数据,重新生成并记录所述指定日志文件的文件指纹;
当判定存在有所述指定日志文件对应的新文件名和原文件名的记录时,根据所述原文件偏移量,从所述新文件名对应的日志文件中收集日志数据。

5.  如权利要求1-4任一权利要求所述的方法,其特征在于,所述获取指定日志文件被写入日志数据的事件之后,判断所述指定日志文件当前的文件指纹,与所述指定日志文件之前的文件指纹是否一致之前,还包括:
判断所述指定日志文件是不是第一次被收集日志数据;
如果是,将所述指定日志文件加入到收集文件集合中,将所述指定日志文件的文件偏移量设置为0,收集所述指定日志文件中的日志数据,生成并记录所述指定日志文件的文件指纹;
如果不是,则执行所述判断所述指定日志文件当前的文件指纹,与所述指定日志文件之前的文件指纹是否一致的步骤。

6.  如权利要求5所述的方法,其特征在于,所述判断所述指定日志文件当前的文件指纹,与所述指定日志文件之前的文件指纹是否一致之后,还包括:
如果一致,则根据所述指定日志文件当前的文件偏移量,从所述指定日志文件中收集日志数据,并在收集日志数据后重新设置所述指定日志文件的文件偏移量。

7.  一种收集日志数据的装置,其特征在于,所述装置包括:
监测模块,用于通过文件变化通知接口监测指定的日志文件系统;
第一获取模块,用于获取指定日志文件被写入日志数据的事件;
第一判断模块,用于判断所述指定日志文件当前的文件指纹,与所述指定日志文件之前的文件指纹是否一致;
第一收集模块,用于如果所述第一判断模块的判断结果是不一致,则获取并根据所述指定日志文件对应的新文件名、原文件名和原文件偏移量,从所述原文件名对应的日志文件和所述新文件名对应的日志文件中收集日志数据。

8.  如权利要求7所述的装置,其特征在于,所述装置还包括:
第二获取模块,用于获取所述指定日志文件被重命名的事件;
记录模块,用于记录所述指定日志文件对应的新文件名和原文件名。

9.  如权利要求8所述的装置,其特征在于,所述文件变化通知接口包括:Linux系统中的inotify,windows系统中的文件系统监测FileSystemWatcher;
相应地,所述指定日志文件被写入日志数据的事件包括:inotify中的文件有新的写入in_modify事件,FileSystemWatcher中的变化Changed事件;
相应地,所述指定日志文件被重命名的事件包括:inotify中的文件移出in_move_from事件和文件移入in_move_to事件,FileSystemWatcher中的重命名Renamed事件。

10.  如权利要求8所述的装置,其特征在于,所述第一收集模块包括:
记录单元,用于如果不一致,将所述指定日志文件当前的文件偏移量和文件名分别作为所述原文件偏移量和所述原文件名记录下来;
处理单元,用于将所述指定日志文件当前的文件偏移量重置为0,收集所述指定日志文件中的日志数据,重新生成并记录所述指定日志文件的文件指纹;
收集单元,用于当判定存在有所述指定日志文件对应的新文件名和原文件名的记录时,根据所述原文件偏移量,从所述新文件名对应的日志文件中收集日志数据。

11.  如权利要求7-10任一权利要求所述的装置,其特征在于,所述装置还包括:
第二判断模块,用于获取指定日志文件被写入日志数据的事件之后,判断所述指定日志文件当前的文件指纹,与所述指定日志文件之前的文件指纹是否一致之前,判断所述指定日志文件是不是第一次被收集日志数据;
处理模块,用于如果所述第二判断模块的判断结果是是,将所述指定日志文件加入到收集文件集合中,将所述指定日志文件的文件偏移量设置为0,收集所述指定日志文件中的日志数据,生成并记录所述指定日志文件的文件 指纹;
通知模块,用于如果所述第二判断模块的判断结果是不是,则通知所述第一判断模块执行所述判断所述指定日志文件当前的文件指纹,与所述指定日志文件之前的文件指纹是否一致的步骤。

12.  如权利要求11所述的装置,其特征在于,所述装置还包括:
第二收集模块,用于如果所述第一判断模块的判断结果是一致,则根据所述指定日志文件当前的文件偏移量,从所述指定日志文件中收集日志数据,并在收集日志数据后重新设置所述指定日志文件的文件偏移量。

说明书

说明书一种收集日志数据的方法及装置
技术领域
本申请涉及计算机技术领域,具体涉及一种收集日志数据的方法及装置。
背景技术
随着计算机技术的发展,计算机的功能也越来越多,计算机已成为必不可少的工具。计算机需要依靠程序才能运行,为了便于对程序进行维护,保证计算机正常运行,常常将程序运行过程中产生的运行状态等日志数据记录在指定日志文件中,通过查询日志文件就可以得到程序相关的信息。在一个计算机集群中,往往需要把每个计算机中一些预设程序的日志数据收集到服务器上,对日志数据进行统一监管和处理。
现有收集日志数据的方法如下:根据指定日志文件的文件名,查询到指定日志文件,从指定日志文件中收集日志数据。
然而,为了防止日志文件过大,会按照预设规则(时间间隔或文件大小等)进行日志回滚,即:当指定日志文件满足预设规则时,将指定日志文件重新命名(即修改为其它文件名),然后新建一个与指定日志文件的原文件名一样的空白日志文件记录回滚之后的日志数据。现有收集日志数据的方法,是根据指定日志文件的文件名,从指定日志文件中收集日志数据,当日志回滚后,记录在重新命名后的日志文件中的日志数据就收集不到,使得收集的日志数据不全。
发明内容
本申请所要解决的技术问题在于提供一种收集日志数据的方法及装置,可以收集到记录在重新命名后的日志文件中的日志数据,使得可以收集到完 整齐全的日志数据。
为了解决上述问题,本申请公开了一种收集日志信息的方法,所述方法包括:
通过文件变化通知接口监测指定的日志文件系统;
获取指定日志文件被写入日志数据的事件;
判断所述指定日志文件当前的文件指纹,与所述指定日志文件之前的文件指纹是否一致;
如果不一致,则获取并根据所述指定日志文件对应的新文件名、原文件名和原文件偏移量,从所述原文件名对应的日志文件和所述新文件名对应的日志文件中收集日志数据。
进一步地,所述方法还包括:
所述通过文件变化通知接口监测指定的日志文件系统之后,还包括:
获取所述指定日志文件被重命名的事件;
记录所述指定日志文件对应的新文件名和原文件名。
进一步地,所述文件变化通知接口包括:Linux系统中的inotify,windows系统中的文件系统监测FileSystemWatcher;
相应地,所述指定日志文件被写入日志数据的事件包括:inotify中的文件有新的写入in_modify事件,FileSystemWatcher中的变化Changed事件;
相应地,所述指定日志文件被重命名的事件包括:inotify中的文件移出in_move_from事件和文件移入in_move_to事件,FileSystemWatcher中的重命名Renamed事件。
进一步地,所述获取并根据所述指定日志文件对应的新文件名、原文件名和原文件偏移量,从所述原文件名对应的日志文件和所述新文件名对应的日志文件中收集日志数据,包括:
将所述指定日志文件当前的文件偏移量和文件名分别作为所述原文件偏移量和所述原文件名记录下来;
将所述指定日志文件当前的文件偏移量重置为0,收集所述指定日志文 件中的日志数据,重新生成并记录所述指定日志文件的文件指纹;
当判定存在有所述指定日志文件对应的新文件名和原文件名的记录时,根据所述原文件偏移量,从所述新文件名对应的日志文件中收集日志数据。
进一步地,所述获取指定日志文件被写入日志数据的事件之后,判断所述指定日志文件当前的文件指纹,与所述指定日志文件之前的文件指纹是否一致之前,还包括:
判断所述指定日志文件是不是第一次被收集日志数据;
如果是,将所述指定日志文件加入到收集文件集合中,将所述指定日志文件的文件偏移量设置为0,收集所述指定日志文件中的日志数据,生成并记录所述指定日志文件的文件指纹;
如果不是,则执行所述判断所述指定日志文件当前的文件指纹,与所述指定日志文件之前的文件指纹是否一致的步骤。
进一步地,所述判断所述指定日志文件当前的文件指纹,与所述指定日志文件之前的文件指纹是否一致之后,还包括:
如果一致,则根据所述指定日志文件当前的文件偏移量,从所述指定日志文件中收集日志数据,并在收集日志数据后重新设置所述指定日志文件的文件偏移量。
为了解决上述问题,本申请公开了一种收集日志数据的装置,所述装置包括:
监测模块,用于通过文件变化通知接口监测指定的日志文件系统;
第一获取模块,用于获取指定日志文件被写入日志数据的事件;
第一判断模块,用于判断所述指定日志文件当前的文件指纹,与所述指定日志文件之前的文件指纹是否一致;
第一收集模块,用于如果所述第一判断模块的判断结果是不一致,则获取并根据所述指定日志文件对应的新文件名、原文件名和原文件偏移量,从所述原文件名对应的日志文件和所述新文件名对应的日志文件中收集日志数据。
进一步地,所述装置还包括:
第二获取模块,用于获取所述指定日志文件被重命名的事件;
记录模块,用于记录所述指定日志文件对应的新文件名和原文件名。
进一步地,所述文件变化通知接口包括:Linux系统中的inotify,windows系统中的文件系统监测FileSystemWatcher;
相应地,所述指定日志文件被写入日志数据的事件包括:inotify中的文件有新的写入in_modify事件,FileSystemWatcher中的变化Changed事件;
相应地,所述指定日志文件被重命名的事件包括:inotify中的文件移出in_move_from事件和文件移入in_move_to事件,FileSystemWatcher中的重命名Renamed事件。
进一步地,所述第一收集模块包括:
记录单元,用于如果不一致,将所述指定日志文件当前的文件偏移量和文件名分别作为所述原文件偏移量和所述原文件名记录下来;
处理单元,用于将所述指定日志文件当前的文件偏移量重置为0,收集所述指定日志文件中的日志数据,重新生成并记录所述指定日志文件的文件指纹;
收集单元,用于当判定存在有所述指定日志文件对应的新文件名和原文件名的记录时,根据所述原文件偏移量,从所述新文件名对应的日志文件中收集日志数据。
进一步地,所述装置还包括:
第二判断模块,用于获取指定日志文件被写入日志数据的事件之后,判断所述指定日志文件当前的文件指纹,与所述指定日志文件之前的文件指纹是否一致之前,判断所述指定日志文件是不是第一次被收集日志数据;
处理模块,用于如果所述第二判断模块的判断结果是是,将所述指定日志文件加入到收集文件集合中,将所述指定日志文件的文件偏移量设置为0,收集所述指定日志文件中的日志数据,生成并记录所述指定日志文件的文件指纹;
通知模块,用于如果所述第二判断模块的判断结果是不是,则通知所述第一判断模块执行所述判断所述指定日志文件当前的文件指纹,与所述指定日志文件之前的文件指纹是否一致的步骤。
进一步地,所述装置还包括:
第二收集模块,用于如果所述第一判断模块的判断结果是一致,则根据所述指定日志文件当前的文件偏移量,从所述指定日志文件中收集日志数据,并在收集日志数据后重新设置所述指定日志文件的文件偏移量。
与现有技术相比,本申请可以获得包括以下技术效果:
通过文件变化通知接口监测指定的日志文件系统,当获取到指定日志文件被写入日志数据的事件,判断指定日志文件当前的文件指纹,与本地记录的指定日志文件的文件指纹不一致(证明发生了日志回滚)时,获取并根据指定日志文件对应的新文件名、原文件名和原文件偏移量,从原文件名对应的日志文件和新文件名对应的日志文件中收集日志数据,使得可以收集到记录在重新命名后的日志文件中的日志数据,使得可以收集到完整齐全的日志数据。
当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有技术效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本申请实施例的第一种收集日志数据的方法流程图;
图2是本申请实施例的第二种收集日志数据的方法流程图;
图3是本申请实施例的第一种收集日志数据的装置结构示意图;
图4是本申请实施例的第二种收集日志数据的装置结构示意图;
图5是本申请实施例的第三种收集日志数据的装置结构示意图;
图6是本申请实施例的第四种收集日志数据的装置结构示意图。
具体实施方式
以下将配合附图及实施例来详细说明本申请的实施方式,藉此对本申请如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
实施例描述
下面以一实施例对本申请方法的实现作进一步说明。如图1所示,为本申请实施例的一种收集日志数据的方法流程图,该方法包括:
S101:通过文件变化通知接口监测指定的日志文件系统。
S102:获取指定日志文件被写入日志数据的事件。
S103:判断指定日志文件当前的文件指纹,与指定日志文件之前的文件指纹是否一致。
S104:如果不一致,则获取并根据指定日志文件对应的新文件名、原文件名和原文件偏移量,从原文件名对应的日志文件和新文件名对应的日志文件中收集日志数据。
优选地,通过文件变化通知接口监测指定的日志文件系统之后,还包括:
获取指定日志文件被重命名的事件;
记录指定日志文件对应的新文件名和原文件名。
优选地,文件变化通知接口包括:Linux系统中的inotify,windows系统中的文件系统监测FileSystemWatcher;
相应地,指定日志文件被写入日志数据的事件包括:inotify中的文件有新的写入in_modify事件,FileSystemWatcher中的变化Changed事件;
相应地,指定日志文件被重命名的事件包括:inotify中的文件移出in_move_from事件和文件移入in_move_to事件,FileSystemWatcher中的重命名Renamed事件。
优选地,获取并根据指定日志文件对应的新文件名、原文件名和原文件偏移量,从原文件名对应的日志文件和新文件名对应的日志文件中收集日志数据,包括:
将指定日志文件当前的文件偏移量和文件名分别作为原文件偏移量和原文件名记录下来;
将指定日志文件当前的文件偏移量重置为0,收集指定日志文件中的日志数据,重新生成并记录指定日志文件的文件指纹;
当判定存在有指定日志文件对应的新文件名和原文件名的记录时,根据原文件偏移量,从新文件名对应的日志文件中收集日志数据。
优选地,获取指定日志文件被写入日志数据的事件之后,判断指定日志文件当前的文件指纹,与指定日志文件之前的文件指纹是否一致之前,还包括:
判断指定日志文件是不是第一次被收集日志数据;
如果是,将指定日志文件加入到收集文件集合中,将指定日志文件的文 件偏移量设置为0,收集指定日志文件中的日志数据,生成并记录指定日志文件的文件指纹;
如果不是,则执行判断指定日志文件当前的文件指纹,与指定日志文件之前的文件指纹是否一致的步骤。
优选地,判断指定日志文件当前的文件指纹,与指定日志文件之前的文件指纹是否一致之后,还包括:
如果一致,则根据指定日志文件当前的文件偏移量,从指定日志文件中收集日志数据,并在收集日志数据后重新设置指定日志文件的文件偏移量。
本实施例所述的收集日志数据的方法,通过文件变化通知接口监测指定的日志文件系统,当获取到指定日志文件被写入日志数据的事件,判断指定日志文件当前的文件指纹,与本地记录的指定日志文件的文件指纹不一致(证明发生了日志回滚)时,获取并根据指定日志文件对应的新文件名、原文件名和原文件偏移量,从原文件名对应的日志文件和新文件名对应的日志文件中收集日志数据,使得可以收集到记录在重新命名后的日志文件中的日志数据,使得可以收集到完整齐全的日志数据。
本申请实施例所述的收集日志数据的方法可以收集Linux系统、windows系统等各种系统中的日志数据,为了便于理解,下面以收集Linux系统中的日志数据为例进行进一步地说明,如图2所示,为本申请实施例的一种收集日志数据的方法流程图,该方法包括:
S201:通过inotify监测指定的日志文件系统。
其中,inotify监测的对象是目录。监测目录发生改变后,inotify会实时产生对应的一系列事件。
S202:判断是否获取到in_modify(文件有新的写入)事件、in_move_from事件(文件移出)或in_move_to(文件移入)事件,如果获取到in_modify事件,则执行S203;如果获取到in_move_from事件,则执行S211;如果获取到in_move_to事件,则执行S213。
S203:判断指定日志文件是不是第一次被收集日志数据,如果是,则执 行S204,否则,执行S205。
S204:将指定日志文件加入到收集文件集合中,将指定日志文件的文件偏移量设置为0,收集指定日志文件中的日志数据,生成并记录指定日志文件的文件指纹,然后结束。
具体地,可以从指定日志文件中收集预设字节数的文字作为文件指纹,通过文件指纹判断指定日志文件包含的内容是否一样。如可以从指定日志文件中收集前100字节作为文件指纹。
S205:判断指定日志文件当前的文件指纹,与指定日志文件之前的文件指纹是否一致,如果不一致,则执行S206;否则,执行S210。
具体地,如果不一致,则说明指定日志文件发生了日志回滚。
S206:标记指定日志文件发生回滚,将指定日志文件当前的文件偏移量和文件名分别作为原文件偏移量和原文件名记录下来,得到偏移量记录(原文件名,原文件偏移量)。
其中,文件偏移量表示位于该文件偏移量前的日志数据都已经被收集了。
例如:当apache2的access.log发生日志回滚时,access.log被重命名为access.log.1,然后新建出一个access.log记录日志数据,access.log当前的文件偏移量为3033,则偏移量记录为:(原文件名:access.log,原文件偏移量:3033)。
S207:将指定日志文件当前的文件偏移量重置为0,收集指定日志文件中的日志数据,重新生成并记录指定日志文件的文件指纹。
S208:判断是否存在有指定日志文件对应的新文件名和原文件名的记录,如果存在有,则执行S209;否则,结束。
具体地,如果在in_modify事件发生之前,先发生了in_move_from事件和in_move_to事件,则会存在有指定日志文件对应的新文件名和原文件名的记录。如已经存在有S215中的新文件名记录(cookie:123,原文件名:access.log,新文件名:access.log.1)。
S209:根据原文件偏移量,从新文件名对应的日志文件中收集日志数据, 然后结束。
例如:根据偏移量记录(原文件名:access.log,原文件偏移量:3033)中的原文件偏移量3033,从新文件名记录(cookie:123,原文件名:access.log,新文件名:access.log.1)中的新文件名access.log.1对应的日志文件中收集日志数据。
S210:根据指定日志文件当前的文件偏移量,从指定日志文件中收集日志数据,并在收集日志数据后重新设置指定日志文件的文件偏移量。然后结束。
S211:判断被移出的文件是不是需要收集日志数据的指定日志文件,如果是,则执行S212;否则,结束。
S212:将事件的cookie以及指定日志文件当前的文件名作为原文件名记录下来,得到原文件名记录(cookie,原文件名),然后结束。
其中,cookie是用于连接两个事件的编号,相关的两个事件的编号一样。
例如:当apache2的access.log发生日志回滚时,access.log被重命名为access.log.1,然后新建出一个access.log记录日志数据,并且对应的cookie是123,则此时,原文件名记录为:(cookie:123,原文件名:access.log)。
S213:获取移入文件对应的cookie。
S214:通过cookie,判断移入文件是不是同一个目录下移动过来的,如果是,则执行S215;否则,结束。
具体地,可以通过查in_move_from事件的记录中是否有相同的cookie,来判断移入文件与被移出的文件是不是同一个目录下移动过来的。
S215:将移入文件的文件名作为指定日志文件的新文件名记录下来,得到新文件名记录(cookie,原文件名,新文件名)。
例如:当apache2的access.log发生日志回滚时,access.log被重命名为access.log.1,然后新建出一个access.log记录日志数据,并且对应的cookie是123,则此时,新文件名记录为:(cookie:123,原文件名:access.log,新文件名:access.log.1)。
S216:判断是否存在有原文件偏移量和原文件名记录,如果存在有,则 执行S209;否则,结束。
具体地,如执行该步骤时,已执行S206,即存在有偏移量记录(原文件名,原文件偏移量),则可以执行S209。
本实施例所述的收集日志数据的方法,通过文件变化通知接口监测指定的日志文件系统,当获取到指定日志文件被写入日志数据的事件,判断指定日志文件当前的文件指纹,与本地记录的指定日志文件的文件指纹不一致(证明发生了日志回滚)时,获取并根据指定日志文件对应的新文件名、原文件名和原文件偏移量,从原文件名对应的日志文件和新文件名对应的日志文件中收集日志数据,使得可以收集到记录在重新命名后的日志文件中的日志数据,使得可以收集到完整齐全的日志数据。
如图3所示,是本申请实施例的装置结构图。一种收集日志数据的装置,包括:
监测模块301,用于通过文件变化通知接口监测指定的日志文件系统;
第一获取模块302,用于获取指定日志文件被写入日志数据的事件;
第一判断模块303,用于判断指定日志文件当前的文件指纹,与指定日志文件之前的文件指纹是否一致;
第一收集模块304,用于如果第一判断模块303的判断结果是不一致,则获取并根据指定日志文件对应的新文件名、原文件名和原文件偏移量,从所述原文件名对应的日志文件和所述新文件名对应的日志文件中收集日志数据。
优选地,参见图4,该装置还包括:
第二获取模块305,用于获取指定日志文件被重命名的事件;
记录模块306,用于记录指定日志文件对应的新文件名和原文件名。
优选地,文件变化通知接口包括:Linux系统中的inotify,windows系统中的文件系统监测FileSystemWatcher;
相应地,指定日志文件被写入日志数据的事件包括:inotify中的文件有 新的写入in_modify事件,FileSystemWatcher中的变化Changed事件;
相应地,指定日志文件被重命名的事件包括:inotify中的文件移出in_move_from事件和文件移入in_move_to事件,FileSystemWatcher中的重命名Renamed事件。
优选地,第一收集模块304包括:
记录单元,用于如果不一致,将指定日志文件当前的文件偏移量和文件名分别作为原文件偏移量和原文件名记录下来;
处理单元,用于将指定日志文件当前的文件偏移量重置为0,收集指定日志文件中的日志数据,重新生成并记录指定日志文件的文件指纹;
收集单元,用于当判定存在有指定日志文件对应的新文件名和原文件名的记录时,根据原文件偏移量,从所述新文件名对应的日志文件中收集日志数据。
优选地,参见图5,该装置还包括:
第二判断模块307,用于获取指定日志文件被写入日志数据的事件之后,判断指定日志文件当前的文件指纹,与指定日志文件之前的文件指纹是否一致之前,判断指定日志文件是不是第一次被收集日志数据;
处理模块308,用于如果第二判断模块307的判断结果是是,将指定日志文件加入到收集文件集合中,将指定日志文件的文件偏移量设置为0,收集指定日志文件中的日志数据,生成并记录指定日志文件的文件指纹;
通知模块309,用于如果第二判断模块307的判断结果是不是,则通知第一判断模303块执行所述判断指定日志文件当前的文件指纹,与指定日志文件之前的文件指纹是否一致的步骤。
优选地,参见图6,该装置还包括:
第二收集模块310,用于如果第一判断模块303的判断结果是一致,则根据指定日志文件当前的文件偏移量,从指定日志文件中收集日志数据,并在收集日志数据后重新设置指定日志文件的文件偏移量。
本实施例所述的收集日志数据的装置,通过文件变化通知接口监测指定的日志文件系统,当获取到指定日志文件被写入日志数据的事件,判断指定 日志文件当前的文件指纹,与本地记录的指定日志文件的文件指纹不一致(证明发生了日志回滚)时,获取并根据指定日志文件对应的新文件名、原文件名和原文件偏移量,从原文件名对应的日志文件和新文件名对应的日志文件中收集日志数据,使得可以收集到记录在重新命名后的日志文件中的日志数据,使得可以收集到完整齐全的日志数据。
上述说明示出并描述了本申请的若干优选实施例,但如前所述,应当理解本申请并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本申请的精神和范围,则都应在本申请所附权利要求的保护范围内。

一种收集日志数据的方法及装置.pdf_第1页
第1页 / 共16页
一种收集日志数据的方法及装置.pdf_第2页
第2页 / 共16页
一种收集日志数据的方法及装置.pdf_第3页
第3页 / 共16页
点击查看更多>>
资源描述

《一种收集日志数据的方法及装置.pdf》由会员分享,可在线阅读,更多相关《一种收集日志数据的方法及装置.pdf(16页珍藏版)》请在专利查询网上搜索。

本申请公开了一种收集日志数据的方法及装置,属于计算机技术领域。所述方法包括:通过文件变化通知接口监测指定的日志文件系统;获取指定日志文件被写入日志数据的事件;判断所述指定日志文件当前的文件指纹,与所述指定日志文件之前的文件指纹是否一致;如果不一致,则获取并根据所述指定日志文件对应的新文件名、原文件名和原文件偏移量,从所述原文件名对应的日志文件和所述新文件名对应的日志文件中收集日志数据。所述装置包括。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1