实际开发过程中遇到这样一个问题,A系统在业务处理过程中会记录日志信息并写在日志文件当中,每个日志文件规定了固定的大小(大前提:A系统我们开发的过程当中没有修改的权利,只能去读日志文件),每当当前日志达到设置大小后,原日志文件譬如XXX.log会重命名成XXX.log.001,之后会重新生成一个XXX.log文件记录最新的日志信息,这两步是循环进行的,也就是可能会生成XXX.log.00x个若干文件。
现在的需求是需要定时去增量扫描A系统下的日志信息并解析,考虑到增量,就想到了记录文件的偏移量,但因为A系统文件会因为大小而重命名,苦思冥想不知何解,求高人指点一二!!!!!
这个要看你对日志信息滞后的容忍度,以及日志信息达到设置大小所需要的时间。
如果日志很容易达到设置大小(很短时间,在容忍度以内)。
我们可以不读xxx.log,只读xxx.log.00x这些文件,就是最新的日志不读,等到A系统把他变成旧的日志再读。
发现的方法是监控文件夹中文件,将所有文件放在列表中,发现新的文件判断下。
目前系统的要求对实时性要求比较高,而且XXX.log日志文件信息大小上限为5M,对于目前的设计要求,可能不会使用您说的这种方式,根据A系统实际运行情况来看,每天会分割5到10个文件不等,最早输出的日志文件卸载后缀00X最大的文件中,以此类推。在定时读取解析文件信息的时候会出现一个问题,之前可能读的xxx.log文件随着大小的增加会重命名成xxx.log.00x,随着当日日志的增加又会变成xxx.log.00x+1,这种情况怎么能实时采集。
@大艾黑天:
如果真是按照你描述的那样,设计A系统的人真是吃饱了没事干。按照你的描述,我理解成这样,
1、xxx.log --> xxx.log.001
2、xxx.log.001 --> xxx.log.002, xxx.log --> xxx.log.001
3、xxx.log.002 --> xxx.log.003, xxx.log.001--> xxx.log.002, xxx.log ---> xxx.log.001
.....
设计A系统的人得有多笨或者多么变态的需求,才干这种事情?
一般情况下应该是这样设计的
1、xxx.log --> xxx.log.001
2、xxx.log --> xxx.log.002
3、xxx.log --> xxx.log.003
.....