一种收集日志数据的方法及装置的制造方法_2

文档序号:8395798阅读:来源:国知局
[0049]与现有技术相比,本申请可以获得包括以下技术效果:
[0050]通过文件变化通知接口监测指定的日志文件系统,当获取到指定日志文件被写入日志数据的事件,判断指定日志文件当前的文件指纹,与本地记录的指定日志文件的文件指纹不一致(证明发生了日志回滚)时,获取并根据指定日志文件对应的新文件名、原文件名和原文件偏移量,从原文件名对应的日志文件和新文件名对应的日志文件中收集日志数据,使得可以收集到记录在重新命名后的日志文件中的日志数据,使得可以收集到完整齐全的日志数据。
[0051]当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有技术效果。
【附图说明】
[0052]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0053]图1是本申请实施例的第一种收集日志数据的方法流程图;
[0054]图2是本申请实施例的第二种收集日志数据的方法流程图;
[0055]图3是本申请实施例的第一种收集日志数据的装置结构示意图;
[0056]图4是本申请实施例的第二种收集日志数据的装置结构示意图;
[0057]图5是本申请实施例的第三种收集日志数据的装置结构示意图;
[0058]图6是本申请实施例的第四种收集日志数据的装置结构示意图。
【具体实施方式】
[0059]以下将配合附图及实施例来详细说明本申请的实施方式,藉此对本申请如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
[0060]在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
[0061]内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
[0062]计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0063]实施例描沭
[0064]下面以一实施例对本申请方法的实现作进一步说明。如图1所示,为本申请实施例的一种收集日志数据的方法流程图,该方法包括:
[0065]S101:通过文件变化通知接口监测指定的日志文件系统。
[0066]S102:获取指定日志文件被写入日志数据的事件。
[0067]S103:判断指定日志文件当前的文件指纹,与指定日志文件之前的文件指纹是否—致。
[0068]S104:如果不一致,则获取并根据指定日志文件对应的新文件名、原文件名和原文件偏移量,从原文件名对应的日志文件和新文件名对应的日志文件中收集日志数据。
[0069]优选地,通过文件变化通知接口监测指定的日志文件系统之后,还包括:
[0070]获取指定日志文件被重命名的事件;
[0071]记录指定日志文件对应的新文件名和原文件名。
[0072]优选地,文件变化通知接口包括:Linux系统中的inotify, windows系统中的文件系统监测 FileSystemWatcher ;
[0073]相应地,指定日志文件被写入日志数据的事件包括:inotify中的文件有新的写A in_modify 事件,FileSystemffatcher 中的变化 Changed 事件;
[0074]相应地,指定日志文件被重命名的事件包括:inotify中的文件移出in_move_from事件和文件移入in_move_to事件,FileSystemffatcher中的重命名Renamed事件。
[0075]优选地,获取并根据指定日志文件对应的新文件名、原文件名和原文件偏移量,从原文件名对应的日志文件和新文件名对应的日志文件中收集日志数据,包括:
[0076]将指定日志文件当前的文件偏移量和文件名分别作为原文件偏移量和原文件名记录下来;
[0077]将指定日志文件当前的文件偏移量重置为0,收集指定日志文件中的日志数据,重新生成并记录指定日志文件的文件指纹;
[0078]当判定存在有指定日志文件对应的新文件名和原文件名的记录时,根据原文件偏移量,从新文件名对应的日志文件中收集日志数据。
[0079]优选地,获取指定日志文件被写入日志数据的事件之后,判断指定日志文件当前的文件指纹,与指定日志文件之前的文件指纹是否一致之前,还包括:
[0080]判断指定日志文件是不是第一次被收集日志数据;
[0081]如果是,将指定日志文件加入到收集文件集合中,将指定日志文件的文件偏移量设置为0,收集指定日志文件中的日志数据,生成并记录指定日志文件的文件指纹;
[0082]如果不是,则执行判断指定日志文件当前的文件指纹,与指定日志文件之前的文件指纹是否一致的步骤。
[0083]优选地,判断指定日志文件当前的文件指纹,与指定日志文件之前的文件指纹是否一致之后,还包括:
[0084]如果一致,则根据指定日志文件当前的文件偏移量,从指定日志文件中收集日志数据,并在收集日志数据后重新设置指定日志文件的文件偏移量。
[0085]本实施例所述的收集日志数据的方法,通过文件变化通知接口监测指定的日志文件系统,当获取到指定日志文件被写入日志数据的事件,判断指定日志文件当前的文件指纹,与本地记录的指定日志文件的文件指纹不一致(证明发生了日志回滚)时,获取并根据指定日志文件对应的新文件名、原文件名和原文件偏移量,从原文件名对应的日志文件和新文件名对应的日志文件中收集日志数据,使得可以收集到记录在重新命名后的日志文件中的日志数据,使得可以收集到完整齐全的日志数据。
[0086]本申请实施例所述的收集日志数据的方法可以收集Linux系统、windows系统等各种系统中的日志数据,为了便于理解,下面以收集Linux系统中的日志数据为例进行进一步地说明,如图2所示,为本申请实施例的一种收集日志数据的方法流程图,该方法包括:
[0087]S201:通过inotify监测指定的日志文件系统。
[0088]其中,inotify监测的对象是目录。监测目录发生改变后,inotify会实时产生对应的一系列事件。
[0089]S202:判断是否获取到in_modify (文件有新的写入)事件、in_move_from事件(文件移出)或in_move_to (文件移入)事件,如果获取到in_modify事件,则执行S203 ;如果获取到in_move_from事件,则执行S211 ;如果获取到in_move_to事件,则执行S213。
[0090]S203:判断指定日志文件是不是第一次被收集日志数据,如果是,则执行S204,否贝IJ,执行S205。
[0091]S204:将指定日志文件加入到收集文件集合中,将指定日志文件的文件偏移量设置为O,收集指定日志文件中的日志数据,生成并记录指定日志文件的文件指纹,然后结束。
[0092]具体地,可以从指定日志文件中收集预设字节数的文字作为文件指纹,通过文件指纹判断指定日志文件包含的内容是否一样。如可以从指定日志文件中收集前100字节作为文件指纹。
[0093]S205:判断指定日志文件
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1