2012-01-27 146 views
4

我們正在構建一個web應用程序,我的老闆堅持使用lucene,因爲日誌將被索引,管理員可以搜索並查詢它。日誌:log4j或lucene?

但是,恕我直言,lucene是一個索引API,所以我認爲正確的是用它來索引東西,而不是存儲日誌。管理員通常是管理員,而不是愚蠢的用戶。他可以完美地打開日誌文件,並使用類似CTRL + F的快捷方式在裏面搜索。

log4j是一個日誌API,所以,這意味着它應該用來記錄事物。我認爲這是正確的選擇。

對嗎?你怎麼看待這件事? 存在可用於查詢日誌文件的API嗎?

謝謝。

+1

您將無法登錄使用Lucene。你會記錄一個記錄器。你可以在後面*索引日誌文件,但我不相信盧塞恩會增加很多價值,除非你的日誌包含很多散文。數據庫日誌記錄或後處理可能是更好的選擇。 – 2012-01-27 12:56:05

+0

但是,那麼數據庫不會放慢? – caarlos0 2012-01-28 00:27:41

+1

如果您登錄到數據庫,當然會有數據庫日誌記錄的開銷,就像寫入數據庫的其他任何內容一樣。我無法知道您的應用程序/基礎架構是否可以支持它。數據庫部分也可以從日誌文件中加載,或作爲單獨的任務從現有文件中處理,或者......等。 – 2012-01-28 00:39:10

回答

7

Lucene Homepage陳述:「Apache Lucene(TM)是一個高性能,全功能的文本搜索引擎庫,完全用Java編寫,它幾乎適用於任何需要全文搜索的應用程序,特別是跨越平臺「。

這絕對不是一個日誌框架,我不會爲這個問題推薦它。使用log4j進行記錄或使用Syslog4j進行分佈式記錄。

6

我也同意應該使用log4j的,產生的日誌文件,然後搜索使用Ctrl + F,Lucene是不是這種情況

2

Lucene是一個文本搜索引擎API,而不是一個日誌框架一個不錯的選擇。我寧願slf4j。您可以使用數據庫appender,然後根據需要查詢結果。

2

Log4j有一個JDBC appender。這顯然不會更新索引。如果可以手動或預定更新索引,即沒有實時功能,那麼這是一個非常簡單的設置。如果這是不可接受的,你可以編寫一個使用Lucene或Hibernate Search的自定義appender。所以這是可能的,並且取決於日誌內所需的搜索量,它甚至可能是有用的。

但是:使用這種方法會增加額外的日誌記錄開銷和可能的問題(數據庫和索引問題)。如果通過日誌文件進行搜索是一項非常常見的任務,那麼必須對日誌文件進行索引,否則會產生其他異味。

2

你的老闆可能在尋找像splunk(集中索引和一個不錯的查詢界面)。

免責聲明:it'sa COMERCIAL產品,我不爲他們工作,我也沒有與產品:)

0

任何方式,我認爲用例將是相同的Lucene以方便搜索和關聯查詢。在具有多個不同日誌的應用程序中,例如,登錄日誌,模塊操作日誌,另一個模塊中操作日誌,記錄特權操作。

而對於系統中具有權限的用戶來說,報表可以以查詢的形式進行查詢,以便他們可以檢查事件。

還是不知道的Splunk,可能會解決這個問題