将SLF4J日志记录到文件、数据库还是Solr?

6
我需要关于SLF4J日志记录的建议。
目前,我们正在为Java Web应用程序使用SLF4J日志记录(log4j绑定),它使用简单的ConsoleAppender。我们接下来的步骤是研究可以保存日志的地方。
我们的应用程序每天处理约10万条消息。每条消息生成大约60-100行的日志。我们的目标是能够快速搜索和查找失败的消息(使用messageId)并确定失败的原因。
我的问题是:以下哪个地方是存储日志的好地方:
文件 数据库 Solr 谢谢。
2个回答

11

考虑切换到logback并使用slf4j API的logback实现。

Logback有一个广泛的appenders列表可用。

我认为你的问题更多地涉及如何使日志可搜索。答案取决于你要搜索什么。

  • 对于简单的应用程序,我只需使用滚动文件appender,并使用grep查找我感兴趣的消息。
  • 更复杂的应用程序还会将消息记录到数据库中。
  • 目前没有适用于log4j和logback的Solr appender。但是,使用solrj API编写它应该很容易。
  • 对于监视日志消息,有一个lilith,它是用于日志消息的远程GUI。不知道它的扩展性如何,但对于演示和简单监视来说肯定很有趣。

更新

根据Sebastien的建议,logback也有一个Graylog2 appender。现在可以在Maven Central上获取。

<dependency>
    <groupId>me.moocar</groupId>
    <artifactId>logback-gelf</artifactId>
    <version>0.9.6p2</version>
</dependency>

当然,这取决于您是否已安装graylog2服务器。

1
还有Graylog,但我认为它的扩展性不太好。 - Sebastien Lorber
我们的搜索将会很简单:messageId + "一些搜索词"。我将研究logback+DB选项。 - scabbage

0

Servlet规范中没有提供文件系统位置来存放日志的功能。

因此,最可靠、长期的解决方案是简单地使用java.util.logging(带有slf4j绑定),并让Web容器处理生成的日志。

您每天大约有1000万个日志条目。这意味着您需要谨慎使用资源。与文件访问相比,数据库通信的成本要高得多。我建议您对这些方法进行分析,以确定是否可以获得所需的性能,以考虑除备份到晚上之外的其他任何东西。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接