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

文档序号:8395798阅读:来源:国知局
当前的文件指纹,与指定日志文件之前的文件指纹是否一致,如果不一致,则执行S206 ;否则,执行S210。
[0094]具体地,如果不一致,则说明指定日志文件发生了日志回滚。
[0095]S206:标记指定日志文件发生回滚,将指定日志文件当前的文件偏移量和文件名分别作为原文件偏移量和原文件名记录下来,得到偏移量记录(原文件名,原文件偏移量)。
[0096]其中,文件偏移量表示位于该文件偏移量前的日志数据都已经被收集了。
[0097]例如:当apache2的access, log发生日志回滚时,access, log被重命名为access, log.1,然后新建出一个access, log记录日志数据,access, log当前的文件偏移量为3033,则偏移量记录为:(原文件名:access.log,原文件偏移量:3033)。
[0098]S207:将指定日志文件当前的文件偏移量重置为0,收集指定日志文件中的日志数据,重新生成并记录指定日志文件的文件指纹。
[0099]S208:判断是否存在有指定日志文件对应的新文件名和原文件名的记录,如果存在有,则执行S209 ;否则,结束。
[0100]具体地,如果在in_modify事件发生之前,先发生了 in_move_from事件和in_move_to事件,则会存在有指定日志文件对应的新文件名和原文件名的记录。如已经存在有S215中的新文件名记录(cookie:123,原文件名:access.log,新文件名:access.log.1)。
[0101]S209:根据原文件偏移量,从新文件名对应的日志文件中收集日志数据,然后结束。
[0102]例如:根据偏移量记录(原文件名:access.log,原文件偏移量:3033)中的原文件偏移量3033,从新文件名记录(cookie:123,原文件名:access.log,新文件名:access.log.1)中的新文件名access, log.1对应的日志文件中收集日志数据。
[0103]S210:根据指定日志文件当前的文件偏移量,从指定日志文件中收集日志数据,并在收集日志数据后重新设置指定日志文件的文件偏移量。然后结束。
[0104]S211:判断被移出的文件是不是需要收集日志数据的指定日志文件,如果是,则执行S212 ;否则,结束。
[0105]S212:将事件的cookie以及指定日志文件当前的文件名作为原文件名记录下来,得到原文件名记录(cookie,原文件名),然后结束。
[0106]其中,cookie是用于连接两个事件的编号,相关的两个事件的编号一样。
[0107]例如:当apache2的access, log发生日志回滚时,access, log被重命名为access, log.1,然后新建出一个access, log记录日志数据,并且对应的cookie是123,则此时,原文件名记录为:(cookie:123,原文件名:access.log)。
[0108]S213:获取移入文件对应的cookie。
[0109]S214:通过cookie,判断移入文件是不是同一个目录下移动过来的,如果是,则执行S215 ;否则,结束。
[0110]具体地,可以通过查in_move_from事件的记录中是否有相同的cookie,来判断移入文件与被移出的文件是不是同一个目录下移动过来的。
[0111]S215:将移入文件的文件名作为指定日志文件的新文件名记录下来,得到新文件名记录(cookie,原文件名,新文件名)。
[0112]例如:当apache2的access, log发生日志回滚时,access, log被重命名为access, log.1,然后新建出一个access, log记录日志数据,并且对应的cookie是123,则此时,新文件名记录为:(cookie:123,原文件名:access.log,新文件名:access.log.1)。
[0113]S216:判断是否存在有原文件偏移量和原文件名记录,如果存在有,则执行S209 ;否则,结束。
[0114]具体地,如执行该步骤时,已执行S206,即存在有偏移量记录(原文件名,原文件偏移量),则可以执行S209。
[0115]本实施例所述的收集日志数据的方法,通过文件变化通知接口监测指定的日志文件系统,当获取到指定日志文件被写入日志数据的事件,判断指定日志文件当前的文件指纹,与本地记录的指定日志文件的文件指纹不一致(证明发生了日志回滚)时,获取并根据指定日志文件对应的新文件名、原文件名和原文件偏移量,从原文件名对应的日志文件和新文件名对应的日志文件中收集日志数据,使得可以收集到记录在重新命名后的日志文件中的日志数据,使得可以收集到完整齐全的日志数据。
[0116]如图3所示,是本申请实施例的装置结构图。一种收集日志数据的装置,包括:
[0117]监测模块301,用于通过文件变化通知接口监测指定的日志文件系统;
[0118]第一获取模块302,用于获取指定日志文件被写入日志数据的事件;
[0119]第一判断模块303,用于判断指定日志文件当前的文件指纹,与指定日志文件之前的文件指纹是否一致;
[0120]第一收集模块304,用于如果第一判断模块303的判断结果是不一致,则获取并根据指定日志文件对应的新文件名、原文件名和原文件偏移量,从所述原文件名对应的日志文件和所述新文件名对应的日志文件中收集日志数据。
[0121]优选地,参见图4,该装置还包括:
[0122]第二获取模块305,用于获取指定日志文件被重命名的事件;
[0123]记录模块306,用于记录指定日志文件对应的新文件名和原文件名。
[0124]优选地,文件变化通知接口包括:Linux系统中的inotify, windows系统中的文件系统监测 FileSystemWatcher ;
[0125]相应地,指定日志文件被写入日志数据的事件包括:inotify中的文件有新的写A in_modify 事件,FileSystemffatcher 中的变化 Changed 事件;
[0126]相应地,指定日志文件被重命名的事件包括:inotify中的文件移出in_move_from事件和文件移入in_move_to事件,FileSystemffatcher中的重命名Renamed事件。
[0127]优选地,第一收集模块304包括:
[0128]记录单元,用于如果不一致,将指定日志文件当前的文件偏移量和文件名分别作为原文件偏移量和原文件名记录下来;
[0129]处理单元,用于将指定日志文件当前的文件偏移量重置为0,收集指定日志文件中的日志数据,重新生成并记录指定日志文件的文件指纹;
[0130]收集单元,用于当判定存在有指定日志文件对应的新文件名和原文件名的记录时,根据原文件偏移量,从所述新文件名对应的日志文件中收集日志数据。
[0131]优选地,参见图5,该装置还包括:
[0132]第二判断模块307,用于获取指定日志文件被写入日志数据的事件之后,判断指定日志文件当前的文件指纹,与指定日志文件之前的文件指纹是否一致之前,判断指定日志文件是不是第一次被收集日志数据;
[0133]处理模块308,用于如果第二判断模块307的判断结果是是,将指定日志文件加入到收集文件集合中,将指定日志文件的文件偏移量设置为0,收集指定日志文件中的日志数据,生成并记录指定日志文件的文件指纹;
[0134]通知模块309,用于如果第二判断模块307的判断结果是不是,则通知第一判断模303块执行所述判断指定日志文件当前的文件指纹,与指定日志文件之前的文件指纹是否一致的步骤。
[0135]优选地,参见图6,该装置还包括:
[0136]第二收集模块310,用于如果第一判断模块303的判断结果是一致,则根据指定日志文件当前的文件偏移量,从指定日志文件中收集日志数据,并在收集日志数据后重
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1