2011-08-18 50 views
2

我期待在其日誌分析日誌文件的方式 - (使用谷歌番石榴)以下格式:解析日誌使用谷歌番石榴

Sep 19 2006 13:23:40 MyDevice [latency][info] xmlfirewall (loopback-fw): tid(2809): Latency: 0 1 0 1 1 0 0 1 **999** 1 1 1 0 0 1 1 [http://<IP address>:9999/foo/test.xml] 

我讀使用谷歌番石榴

List <String> lines = Files.readLines(new File("C://my.log"), Charsets.UTF_8); 
日誌文件

我想是基於用戶輸入(開始時間,結束時間,ip地址)做什麼,我想皮卡只有那些行,我們有開始/結束時間之間IPAddess然後產生這樣

輸出時間,設備名稱,LatencyValue - 在上述情況下輸出將是

05:13:40,mydevice在999

我應該如何去做。

回答

1

我不認爲番石榴會幫助你,我個人也不會讀文件到行列表中。

相反,我會使用一個正則表達式,並在整個文本運行它,就像這樣:

// define pattern as constant 
private static final Pattern PATTERN = 
Pattern.compile("^.*(?:\\d{1,3}\\.){3}\\d{1,3}.*$",Pattern.MULTILINE); 

//now use the pattern in your code (inside a method): 
List<String> matchingLines = Lists.newArrayList(); 
Matcher matcher = PATTERN.matcher(logFileContentsAsString); 
while(matcher.find()){ 
    String line = matcher.group(); 
    if(performSomeAdditionalTests(line, userData)) 
     matchingLines.add(line); 
} 
+0

我不擅長模式/正則表達式您可以共享完整的代碼。 – Amit

+6

a)這不是PleaseWriteMyCodeForFree.com b)其他答案比我的好,反正 –