java 通过正则表达式_java-grok通过正则表达式解析日志

项目中有一个新的需求,就是需要解析日志,将日志中的部分数据分析获取出来供系统使用,通俗的讲就是抓取日志中的部分有用的信息,比如下面的apache日志信息,我需要解析每行日志,获取每行日志的IP地址、用户、创建时间、请求方式、地址....如果我们单纯使用java的方式,可能会想到通过文件流读取日志信息,然后逐行解析字符串,但是这种方式太过于复杂,而且效率比较低,在网上查询了相关的资料,决定使用logstash的grok工具,在网上也有相对应的java实现,其实现原理就是自定义正则表达式,通过正则表达式来解析日志,好处就是我们可以将日志中不规则的数据转换为规则的数据,例如map或者json数据,还有就是写一次表达式之后,可以在多处运行,如果有什么不同的地方,只需要修改一下正则表达式即可,是不是感觉很方便呢。

64.242.88.10 - - [07/Mar/2004:16:05:49 -0800] "GET /twiki/bin/edit/Main/Double_bounce_sender?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846

64.242.88.10 - - [07/Mar/2004:16:06:51 -0800] "GET /twiki/bin/rdiff/TWiki/NewUserTemplate?rev1=1.3&rev2=1.2 HTTP/1.1" 200 4523

64.242.88.10 - - [07/Mar/2004:16:10:02 -0800] "GET /mailman/listinfo/hsdivision HTTP/1.1" 200 6291

64.242.88.10 - - [07/Mar/2004:16:11:58 -0800] "GET /twiki/bin/view/TWiki/WikiSyntax HTTP/1.1" 200 7352

64.242.88.10 - - [07/Mar/2004:16:20:55 -0800] "GET /twiki/bin/view/Main/DCCAndPostFix HTTP/1.1" 200 5253

网上对grok的定义是:Grok 是 Logstash 最重要的插件。你可以在 grok 里预定义好命名正则表达式,在稍后(grok参数或者其他正则表达式里)引用它。参考博文:http://udn.yyuap.com/doc/logstash-best-practice-cn/filter/grok.html

用java api的方式来集成grok,在github上面已经有了相关的项目工程实现了,我们可以在github中获取这个工程:https://github.com/thekrakken/java-grok,或者直接使用其打包好了的jar包和

你可能感兴趣的:(java,通过正则表达式)