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

文档序号:8395798阅读:380来源:国知局
一种收集日志数据的方法及装置的制造方法
【技术领域】
[0001]本申请涉及计算机技术领域,具体涉及一种收集日志数据的方法及装置。
【背景技术】
[0002]随着计算机技术的发展,计算机的功能也越来越多,计算机已成为必不可少的工具。计算机需要依靠程序才能运行,为了便于对程序进行维护,保证计算机正常运行,常常将程序运行过程中产生的运行状态等日志数据记录在指定日志文件中,通过查询日志文件就可以得到程序相关的信息。在一个计算机集群中,往往需要把每个计算机中一些预设程序的日志数据收集到服务器上,对日志数据进行统一监管和处理。
[0003]现有收集日志数据的方法如下:根据指定日志文件的文件名,查询到指定日志文件,从指定日志文件中收集日志数据。
[0004]然而,为了防止日志文件过大,会按照预设规则(时间间隔或文件大小等)进行日志回滚,即:当指定日志文件满足预设规则时,将指定日志文件重新命名(即修改为其它文件名),然后新建一个与指定日志文件的原文件名一样的空白日志文件记录回滚之后的日志数据。现有收集日志数据的方法,是根据指定日志文件的文件名,从指定日志文件中收集日志数据,当日志回滚后,记录在重新命名后的日志文件中的日志数据就收集不到,使得收集的日志数据不全。

【发明内容】

[0005]本申请所要解决的技术问题在于提供一种收集日志数据的方法及装置,可以收集到记录在重新命名后的日志文件中的日志数据,使得可以收集到完整齐全的日志数据。
[0006]为了解决上述问题,本申请公开了一种收集日志信息的方法,所述方法包括:
[0007]通过文件变化通知接口监测指定的日志文件系统;
[0008]获取指定日志文件被写入日志数据的事件;
[0009]判断所述指定日志文件当前的文件指纹,与所述指定日志文件之前的文件指纹是否一致;
[0010]如果不一致,则获取并根据所述指定日志文件对应的新文件名、原文件名和原文件偏移量,从所述原文件名对应的日志文件和所述新文件名对应的日志文件中收集日志数据。
[0011]进一步地,所述方法还包括:
[0012]所述通过文件变化通知接口监测指定的日志文件系统之后,还包括:
[0013]获取所述指定日志文件被重命名的事件;
[0014]记录所述指定日志文件对应的新文件名和原文件名。
[0015]进一步地,所述文件变化通知接口包括:Linux系统中的inotify, windows系统中的文件系统监测FileSystemWatcher ;
[0016]相应地,所述指定日志文件被写入日志数据的事件包括:inotify中的文件有新的写入 in_modify 事件,FileSystemWatcher 中的变化 Changed 事件;
[0017]相应地,所述指定日志文件被重命名的事件包括:inotify中的文件移出in_move_from事件和文件移入in_move_to事件,FileSystemffatcher中的重命名Renamed事件。
[0018]进一步地,所述获取并根据所述指定日志文件对应的新文件名、原文件名和原文件偏移量,从所述原文件名对应的日志文件和所述新文件名对应的日志文件中收集日志数据,包括:
[0019]将所述指定日志文件当前的文件偏移量和文件名分别作为所述原文件偏移量和所述原文件名记录下来;
[0020]将所述指定日志文件当前的文件偏移量重置为0,收集所述指定日志文件中的日志数据,重新生成并记录所述指定日志文件的文件指纹;
[0021]当判定存在有所述指定日志文件对应的新文件名和原文件名的记录时,根据所述原文件偏移量,从所述新文件名对应的日志文件中收集日志数据。
[0022]进一步地,所述获取指定日志文件被写入日志数据的事件之后,判断所述指定日志文件当前的文件指纹,与所述指定日志文件之前的文件指纹是否一致之前,还包括:
[0023]判断所述指定日志文件是不是第一次被收集日志数据;
[0024]如果是,将所述指定日志文件加入到收集文件集合中,将所述指定日志文件的文件偏移量设置为0,收集所述指定日志文件中的日志数据,生成并记录所述指定日志文件的文件指纹;
[0025]如果不是,则执行所述判断所述指定日志文件当前的文件指纹,与所述指定日志文件之前的文件指纹是否一致的步骤。
[0026]进一步地,所述判断所述指定日志文件当前的文件指纹,与所述指定日志文件之前的文件指纹是否一致之后,还包括:
[0027]如果一致,则根据所述指定日志文件当前的文件偏移量,从所述指定日志文件中收集日志数据,并在收集日志数据后重新设置所述指定日志文件的文件偏移量。
[0028]为了解决上述问题,本申请公开了一种收集日志数据的装置,所述装置包括:
[0029]监测模块,用于通过文件变化通知接口监测指定的日志文件系统;
[0030]第一获取模块,用于获取指定日志文件被写入日志数据的事件;
[0031]第一判断模块,用于判断所述指定日志文件当前的文件指纹,与所述指定日志文件之前的文件指纹是否一致;
[0032]第一收集模块,用于如果所述第一判断模块的判断结果是不一致,则获取并根据所述指定日志文件对应的新文件名、原文件名和原文件偏移量,从所述原文件名对应的日志文件和所述新文件名对应的日志文件中收集日志数据。
[0033]进一步地,所述装置还包括:
[0034]第二获取模块,用于获取所述指定日志文件被重命名的事件;
[0035]记录模块,用于记录所述指定日志文件对应的新文件名和原文件名。
[0036]进一步地,所述文件变化通知接口包括:Linux系统中的inotify, windows系统中的文件系统监测FileSystemWatcher ;
[0037]相应地,所述指定日志文件被写入日志数据的事件包括:inotify中的文件有新的写入 in_modify 事件,FileSystemWatcher 中的变化 Changed 事件;
[0038]相应地,所述指定日志文件被重命名的事件包括:inotify中的文件移出in_move_from事件和文件移入in_move_to事件,FileSystemffatcher中的重命名Renamed事件。
[0039]进一步地,所述第一收集模块包括:
[0040]记录单元,用于如果不一致,将所述指定日志文件当前的文件偏移量和文件名分别作为所述原文件偏移量和所述原文件名记录下来;
[0041]处理单元,用于将所述指定日志文件当前的文件偏移量重置为0,收集所述指定日志文件中的日志数据,重新生成并记录所述指定日志文件的文件指纹;
[0042]收集单元,用于当判定存在有所述指定日志文件对应的新文件名和原文件名的记录时,根据所述原文件偏移量,从所述新文件名对应的日志文件中收集日志数据。
[0043]进一步地,所述装置还包括:
[0044]第二判断模块,用于获取指定日志文件被写入日志数据的事件之后,判断所述指定日志文件当前的文件指纹,与所述指定日志文件之前的文件指纹是否一致之前,判断所述指定日志文件是不是第一次被收集日志数据;
[0045]处理模块,用于如果所述第二判断模块的判断结果是是,将所述指定日志文件加入到收集文件集合中,将所述指定日志文件的文件偏移量设置为0,收集所述指定日志文件中的日志数据,生成并记录所述指定日志文件的文件指纹;
[0046]通知模块,用于如果所述第二判断模块的判断结果是不是,则通知所述第一判断模块执行所述判断所述指定日志文件当前的文件指纹,与所述指定日志文件之前的文件指纹是否一致的步骤。
[0047]进一步地,所述装置还包括:
[0048]第二收集模块,用于如果所述第一判断模块的判断结果是一致,则根据所述指定日志文件当前的文件偏移量,从所述指定日志文件中收集日志数据,并在收集日志数据后重新设置所述指定日志文件的文件偏移量。
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1