分析日志并不是Java擅长的工作,多数时候我们经常会把这项工作交给shell\Perl\Python之类的脚本去处理。但是很多时候因为所处的“大环境”是Java,在分析日志的时候需要去调用一些Java的接口,那么日志分析工具就得用Java来写了。分析日志是个很繁琐的工作,需要每次都去打开文件、一行行处理然后关闭文件,如果是动态日志分析还需要去维护文件指针。于是这种工作做多了烦了之后就把这些繁琐的通用逻辑抽出来,做成框架的形式,这样在每次编写日志分析程序的时候只需要去关注业务逻辑,而不必去关心指针或者IO之类的琐事。
小项目,没必要起个很文艺的名,其实更重要的是我也不文艺
,干脆就叫LogAnalyzerFramework,项目地址:https://github.com/chihongze/LogAnalyzerFramework 下面来简单谈下这东西的设计。
对于一个日志文件的分析做为一个"task",一个task可以包含多个analyzelet,比如我们要分析web服务的日志,既要分析出其中的异常,又要分析用户行为,那么就可以把这两个业务编写成两个不同的analyzelet,这样在遍历一次日志的时候会同时执行多个业务。可以理解为一个事件触发多个监听器的模式。定义task不需要编写任何Java代码,只需要编写一个简单的yaml就可以了,比如:
taskName: testTask
pointerName: /data/test_ptr
<