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

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