当前位置: 代码迷 >> J2EE >> java解析日志的有关问题
  详细解决方案

java解析日志的有关问题

热度:37   发布时间:2016-04-17 23:08:46.0
java解析日志的问题
如题,整个日志是一个xml,不断的的日志打印,里面有data节点,data节点下在rec节点,每打印一次日志,增加一对rec节点,整个日志还是一个xml,只是一直在日志中</data>节点之前增加新的rec节点。现在我要解析这个日志,把rec中的内容解析出来,解析按1分钟执行一次,每次从上一次结束的位置开始。
请教各位,有什么好的方案?
谢谢!
------解决思路----------------------
生成日志的是第三方的还是自己写的?
------解决思路----------------------
每天做一次分割,只分析当天的吧。似乎做不到增量分析
------解决思路----------------------
解析到哪个位置,可以用特殊符号做个标记,以便于下次遍历,找到特殊符号,直接从后边解析。
------解决思路----------------------
不知你咋写入的,还能写到一半?那还是XML吗?如果不是XML,那就记录OFFSET得了,如果后面解析失败的就在当前位置继续解析;如果确保是XML,那就用SAX
------解决思路----------------------
引用:
一个进程在写日志,另外一个进程在读,你能保证每次读到的都是完整的?
不过我已经解决,就是每次读的时候,根据xml的特点,读到一个完整的xml才解析,如果读不到一个完整的xml,就把当前的最后一个字节减去不完整的xml的字节保存起来当作下一周期的开始读位置。已经运行半个月了,没有问题。

Quote: 引用:

不知你咋写入的,还能写到一半?那还是XML吗?如果不是XML,那就记录OFFSET得了,如果后面解析失败的就在当前位置继续解析;如果确保是XML,那就用SAX
解决思路还是很清晰的,其实联系实际情况也应该是这样,不完整的节点,本来也没办法解析,所以肯定是到每个完整的解析才解析并且做标记。
------解决思路----------------------
引用:
一个进程在写日志,另外一个进程在读,你能保证每次读到的都是完整的?
不过我已经解决,就是每次读的时候,根据xml的特点,读到一个完整的xml才解析,如果读不到一个完整的xml,就把当前的最后一个字节减去不完整的xml的字节保存起来当作下一周期的开始读位置。已经运行半个月了,没有问题。

Quote: 引用:

不知你咋写入的,还能写到一半?那还是XML吗?如果不是XML,那就记录OFFSET得了,如果后面解析失败的就在当前位置继续解析;如果确保是XML,那就用SAX


我本来就是这个意思,你看清楚再说
  相关解决方案