首页 新闻 会员 周边 捐助

Java实时增量扫描文件内容

0
悬赏园豆:5 [已解决问题] 解决于 2014-08-24 21:12

实际开发过程中遇到这样一个问题,A系统在业务处理过程中会记录日志信息并写在日志文件当中,每个日志文件规定了固定的大小(大前提:A系统我们开发的过程当中没有修改的权利,只能去读日志文件),每当当前日志达到设置大小后,原日志文件譬如XXX.log会重命名成XXX.log.001,之后会重新生成一个XXX.log文件记录最新的日志信息,这两步是循环进行的,也就是可能会生成XXX.log.00x个若干文件。

现在的需求是需要定时去增量扫描A系统下的日志信息并解析,考虑到增量,就想到了记录文件的偏移量,但因为A系统文件会因为大小而重命名,苦思冥想不知何解,求高人指点一二!!!!!

AaronChun的主页 AaronChun | 初学一级 | 园豆:152
提问于:2014-05-28 21:18
< >
分享
最佳答案
0

这个要看你对日志信息滞后的容忍度,以及日志信息达到设置大小所需要的时间。

如果日志很容易达到设置大小(很短时间,在容忍度以内)。

我们可以不读xxx.log,只读xxx.log.00x这些文件,就是最新的日志不读,等到A系统把他变成旧的日志再读。

发现的方法是监控文件夹中文件,将所有文件放在列表中,发现新的文件判断下。

收获园豆:5
爱编程的大叔 | 高人七级 |园豆:30844 | 2014-05-28 21:46

目前系统的要求对实时性要求比较高,而且XXX.log日志文件信息大小上限为5M,对于目前的设计要求,可能不会使用您说的这种方式,根据A系统实际运行情况来看,每天会分割5到10个文件不等,最早输出的日志文件卸载后缀00X最大的文件中,以此类推。在定时读取解析文件信息的时候会出现一个问题,之前可能读的xxx.log文件随着大小的增加会重命名成xxx.log.00x,随着当日日志的增加又会变成xxx.log.00x+1,这种情况怎么能实时采集。

AaronChun | 园豆:152 (初学一级) | 2014-05-29 08:14

@大艾黑天: 

如果真是按照你描述的那样,设计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

..... 

爱编程的大叔 | 园豆:30844 (高人七级) | 2014-05-29 10:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册