java-grok的简单使用

因为是maven项目,所以可以直接在pom中添加依赖,这样包就自己下载下来了:

    <dependency>
        <groupId>io.krakens</groupId>
        <artifactId>java-grok</artifactId>
        <version>0.1.9</version>
    </dependency>

下载好包之后,就可以开心的敲代码了。项目中的代码不能贴出来,此处就简单的写一下。

    @Test
    public void grokTest() {
        GrokCompiler grokCompiler = GrokCompiler.newInstance();
        // 进行注册, registerDefaultPatterns()方法注册的是Grok内置的patterns
        grokCompiler.registerDefaultPatterns();
        /*
         传入自定义的pattern, 会从已注册的patterns里面进行配对, 例如: TIMESTAMP_ISO8601:timestamp1, TIMESTAMP_ISO8601在注册的
         patterns里面有对应的解析格式, 配对成功后, 会在match时按照固定的解析格式将解析结果存入map中, 此处timestamp1作为输出的key
          */
        Grok grok = grokCompiler.compile("%{TIMESTAMP_ISO8601:timestamp1}%{SPACE}%{WORD:location}"
            + ".%{WORD:level}%{SPACE}%{IP:ip}%{SPACE}%{MONTH:month}");
        String logMsg = "2018-08-23 02:56:53 Local7.Info 171.8.79.214 Aug Aug  23 02:56:53 2018 "
            + "S7506E-A %%10OSPF/6/ORIGINATE_LSA(t): OSPF TrapIDpID1.3.6.1.2.1..1.2.1.14.16.2.1.2.12ospfOriginateLsa: "
            + "Originate new LSA AreaId 0.0.0.0 LsdbType 5 LsdbLsid id 192.168.17.16Lsd LsdbRouterId Id 192.168.250.254"
            + " Rou Router er 192.168.250.254.";
        // 通过match()方法进行匹配, 对log进行解析, 按照指定的格式进行输出
        Match grokMatch = grok.match(logMsg);
        // 获取结果
        Map<String, Object> resultMap = grokMatch.capture();
        logger.info("Result = {}", resultMap);
    }

输出结果:
Result = {timestamp1=2018-08-23 02:56:53, MONTHNUM=08, HOUR=[02, null], level=Info, ip=171.8.79.214, SPACE=[ , , ], YEAR=2018, month=Aug, MINUTE=[56, null], SECOND=53, location=Local7, ISO8601_TIMEZONE=null, MONTHDAY=23}
以上是java-grok的简单使用,注释只是一些简单的个人理解,嗯…写的十分简洁…
想要深入了解的童鞋,可以去GitHub上看看: https://github.com/thekrakken/java-grok

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章