摘要:中解析日志常用的是,是一個(gè)用于解析和其它文件的簡(jiǎn)單易用的,并且它可以將這些無結(jié)構(gòu)的轉(zhuǎn)換成結(jié)構(gòu)化的數(shù)據(jù)使用正則表達(dá)式對(duì)進(jìn)行解析,常用的是和,下面來具體說說各自的使用是組織提供的實(shí)現(xiàn),在倉(cāng)庫(kù)中輸入就可以找到對(duì)應(yīng)的包簡(jiǎn)單項(xiàng)目如果是簡(jiǎn)單項(xiàng)目,直接
Java中解析日志常用的是Grok,Grok是一個(gè)用于解析logs和其它文件的簡(jiǎn)單易用的API,并且它可以將這些無結(jié)構(gòu)的logs轉(zhuǎn)換成結(jié)構(gòu)化的數(shù)據(jù)(JSON),使用正則表達(dá)式對(duì)logs進(jìn)行解析,常用的是grok和java-grok,下面來具體說說各自的使用
grokgrok是io.thekraken組織提供的實(shí)現(xiàn),在mven倉(cāng)庫(kù)中輸入io.thekraken就可以找到對(duì)應(yīng)的jar包
簡(jiǎn)單Java項(xiàng)目如果是簡(jiǎn)單Java項(xiàng)目,直接引入依賴的jar包即可,對(duì)于0.1.5的版本,必須引入5個(gè)jar包:commons-lang3-3.1.jar、slf4j-api-1.7.25.jar、slf4j-nop-1.7.25.jar、gson-2.2.2.jar、grok-0.1.5.jar
MAVEN項(xiàng)目如果是MAVEN項(xiàng)目,直接POM文件中添加如下依賴就可以了
使用舉例io.thekraken grok 0.1.5
由于logs等結(jié)構(gòu)復(fù)雜,所以grok使用正則表達(dá)式來解析日志,它對(duì)于很多常見的logs(如:mongodb、redis、java)已經(jīng)內(nèi)置好了正則表達(dá)式庫(kù),當(dāng)然也可以根據(jù)logs的格式自定義正則表達(dá)式庫(kù),使用起來很簡(jiǎn)單,代碼如下:
public static void useGrok() throws Exception { String GROK_PATTERN_PATH = "src/grok-pattern"; String logMsg = "<165>1 2003-08-24T05:14:15.000003-07:00 192.0.2.1 myproc 8710 - - %% It"s time to make the do-nuts."; String pattern = "%{SYSLOG5424LINE}"; Grok grok = new Grok(); grok.addPatternFromFile(GROK_PATTERN_PATH); grok.compile(pattern); Match grokMatch = grok.match(logMsg); grokMatch.captures(); if(!grokMatch.isNull()){ System.out.println(grokMatch.toMap().toString()); System.out.println(grokMatch.toJson().toString()); }else{ System.out.println("not match"); } }
可以在Github上查看更多關(guān)于grok的使用
java-grokjava-grok是io.krakens組織提供的實(shí)現(xiàn),在maven倉(cāng)庫(kù)中輸入io.krakens即可找到對(duì)應(yīng)的jar包
簡(jiǎn)單Java項(xiàng)目如果是簡(jiǎn)單Java項(xiàng)目,直接引入依賴的jar包即可,對(duì)應(yīng)0.1.9版,除了引入java-grok-0.1.9.jar外,還必須引入commons-lang3-3.1.jar
MAVEN項(xiàng)目如果是MAVEN項(xiàng)目,直接POM文件中添加如下依賴就可以了
使用舉例io.krakens java-grok 0.1.9
java-grok也內(nèi)置了許多正則表達(dá)式,使用起來相對(duì)grok簡(jiǎn)單,不需要顯示地指定pattern文件位置
public static void useJavaGrok() throws Exception { GrokCompiler grokCompiler = GrokCompiler.newInstance(); grokCompiler.registerDefaultPatterns(); final io.krakens.grok.api.Grok grok = grokCompiler.compile("%{COMBINEDAPACHELOG}"); String log = "112.169.19.192 - - [06/Mar/2013:01:36:30 +0900] "GET / HTTP/1.1" 200 44346 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22""; io.krakens.grok.api.Match grokMatch = grok.match(log); final Mapcapture = grokMatch.capture(); System.out.println(capture); }
可以在Github上查看更多關(guān)于java-grok的使用
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/72010.html
摘要:項(xiàng)目中異常分析引發(fā)崩潰日志的流程分析解決辦法常見的出現(xiàn)場(chǎng)景狀態(tài)異常非法線程操作。引發(fā)崩潰日志的流程分析解釋如下所示,釋放與此位圖關(guān)聯(lián)的本機(jī)對(duì)象,并清除對(duì)像素?cái)?shù)據(jù)的引用。 目錄介紹 1.1 java.lang.UnsatisfiedLinkError找不到so庫(kù)異常 1.2 java.lang.IllegalStateException非法狀態(tài)異常 1.3 android.conten...
摘要:本文要來分享給大家程序員最常用的日志框架組件。沒有基礎(chǔ)的同學(xué)也不要著急,這套教程覆蓋了目前所有的日志框架,只要你學(xué),就一定用得到,先收藏,以備不時(shí)之需。 作為一名Java程序員,我們開發(fā)了很多Java應(yīng)用程序,包括桌面應(yīng)用、WEB應(yīng)用以及移動(dòng)應(yīng)用。然而日志系統(tǒng)是一個(gè)成熟Java應(yīng)用所必不可少的。在開發(fā)和調(diào)試階段,日志可以幫...
摘要:使用自建的類加載器主要是為了便于處理預(yù)編譯后的字節(jié)碼以及方便在模式下進(jìn)行即時(shí)的熱更新。 注:本系列文章所用play版本為1.2.6 在上一篇中,我們分析了play的2種啟動(dòng)方式,這一篇,我們來看看Play類的初始化過程 Play類 無論是Server還是ServletWrapper方式運(yùn)行,在他們的入口中都會(huì)運(yùn)行Play.init()來對(duì)Play類進(jìn)行初始化。那在解析初始化之前,我們先...
摘要:換句話說,環(huán)境或應(yīng)用程序沒有處于請(qǐng)求操作的適當(dāng)狀態(tài)。項(xiàng)目中異常分析引發(fā)崩潰日志的流程分析解決辦法常見的出現(xiàn)場(chǎng)景狀態(tài)異常非法線程操作。導(dǎo)致的方法出來顯示消息位于該消息之后,遲遲沒有執(zhí)行。這時(shí)候,的超時(shí)檢測(cè)結(jié)束,刪除了服務(wù)中的記錄。 目錄介紹 1.1 java.lang.UnsatisfiedLinkError找不到so庫(kù)異常 1.2 java.lang.IllegalStateExce...
閱讀 1317·2019-08-30 15:44
閱讀 2032·2019-08-30 13:49
閱讀 1661·2019-08-26 13:54
閱讀 3494·2019-08-26 10:20
閱讀 3271·2019-08-23 17:18
閱讀 3303·2019-08-23 17:05
閱讀 2137·2019-08-23 15:38
閱讀 1022·2019-08-23 14:35