2014-01-16 26 views
0

我有從遠程機器下載的日誌文件(Log4j)。我的要求是將這些文件的內容存儲到mongodb中。我選擇mongodb,因爲它是無模式數據存儲,因此非常適合存儲日誌數據。我的查詢是如何將日誌數據轉換爲json文檔並將其存儲在mongodb中?我可以根據正則表達式分割每個日誌條目並將其存儲在一個對象中,然後將其保存到mongo中,但是我有一種直覺,有一種更好的方式來做到這一點。我在這裏討論的日誌文件是在max 50MB的大小。 這是一個消毒的日誌文件是怎麼回事的樣子:將日誌數據轉換爲json文檔以存儲在MongoDB中

2014-01-11T17:18:52.656260-08:00 localhost local0: Localhost 17:18:52.655 [INFO ] [..... | Timer-1 ] - asldknluenfbayewbfayewbdaiybdaiywbayhwbdsaas
2014-01-11T13:18:52.657649-08:00 localhost local0: Localhost 17:18:52.657 [INFO ] [..... | Timer-1 ] - dasdasldukjbfksbdfkajsnbdkasaasdasdasdasdasd
2014-01-11T13:18:52.659029-08:00 localhost local0: Localhost 17:18:52.658 [WARN ] [..... | Timer-1 ] - fjdshfaushdaksbdkasudhaksudbaksdbaksdasdasd
2014-01-11T56:18:52.661312-08:00 localhost local0: Localhost 17:18:52.660 [INFO ] [..... | Timer-1 ] - java.util.ConcurrentModificationException at java.util.LinkedHashMap$LinkedHashIterator.nextEntry(LinkedHashMap.java:365) at java.util.LinkedHashMap$KeyIterator.next(LinkedHashMap.java:376) at java.util.AbstractCollection.toArray(AbstractCollection.java:126) at java.util.ArrayList.addAll(ArrayList.java:473) at a.b.c.etc.SomeWrapper.rebuild(SomeWraper.java:109) at a.b.c.etc.SomeCaller.updateCache(SomeCaller.java:421)
2014-01-11T17:18:52.661751-08:00 localhost local0: Localhost 17:18:52.661 [FATAL] [..... | Timer-1 ] - sdfsdfsdfsdfsdfsdfsdfsasdasdasdasdasdasdasd
2014-01-11T17:18:52.663283-08:00 localhost local0: Localhost 17:18:52.662 [ERROR] [..... | Timer-1 ] - sdasdasdasdas

我會查詢基於日期範圍的數據和日誌級別,因此,這是兩個領域我就連同場想保存數據。 任何想法/幫助,將不勝感激。

+0

部分重複[解析log4j日誌文件](http://stackoverflow.com/questions/2327073)。我認爲你正在尋找一個庫或模板來解析'log4j'輸出(在這之後,它應該直接將解析後的結果保存到MongoDB中)。您對數據查詢的評論意味着關於模式設計和索引的第二個問題。我想你可能想單獨發佈你正在考慮的模式方法的示例,常見查詢以及是否定義了合適的索引。 – Stennie

回答

相關問題