日志:log4j还是lucene?

时间:2012-01-27 12:50:40

标签: java lucene log4j logging

我们正在构建一个Web应用程序,我的老板坚持使用lucene,因为日志将被编入索引,管理员可以在之后搜索和查询。

但是,恕我直言,lucene是一个索引API,所以,我认为正确的是使用它来索引事物,而不是存储日志。管理员通常是管理员,而不是愚蠢的用户。他可以完美地打开日志文件,并使用CTRL + F之类的快捷方式在其中搜索。

log4j是一个日志API,因此,它意味着它应该用于记录事物。我认为这是正确的选择。

我是对的吗?你怎么看待这件事? 存在可用于查询日志文件的API吗?

感谢。

6 个答案:

答案 0 :(得分:7)

Lucene Homepage州:“Apache Lucene(TM)是一个完全用Java编写的高性能,全功能的文本搜索引擎库。它是一种适用于几乎所有需要全文搜索的应用程序的技术,尤其是跨平台。“

它绝对不是一个日志记录框架,我不推荐这个问题。使用log4jSyslog4j用于记录或分发loggig。

答案 1 :(得分:6)

我也同意一个人应该使用log4j,生成日志文件并使用ctrl + f进行搜索,Lucene不是这种情况的好选择

答案 2 :(得分:2)

Lucene是一个文本搜索引擎API,而不是一个日志框架。我更希望slf4j。您可以使用数据库附加程序,然后根据需要查询结果。

答案 3 :(得分:2)

Log4j有一个JDBC appender。这显然不会更新索引。如果可以手动或预定更新索引,即没有实时功能,那么这是一个非常简单的设置。如果这是不可接受的,你可以编写一个使用Lucene或Hibernate Search的自定义appender。所以它是可能的,并且根据日志中所需的搜索量,它甚至可能是有用的。

但是:您使用此方法添加了额外的日志记录开销和可能的问题(数据库和索引问题)。如果通过日志文件进行搜索是一项非常常见的任务,那么必须将日志文件编入索引其他东西。

答案 4 :(得分:2)

你的老板可能正在寻找像splunk这样的东西(集中索引和一个不错的查询界面)。

免责声明:这是一种商业产品,我不会为他们工作,也不会以任何方式与产品联系:)

答案 5 :(得分:0)

我认为用例将是相同的lucene以方便搜索和查询。在具有多个不同日志的应用程序中,例如,登录日志,模块的操作日志,另一个模块中的操作日志,记录特权操作。

对于在报告形式的系统内具有权限的用户,可以进行查询,以便他们可以检查事件。

仍然不知道Splunk,可能会解决这个问题