SLF4J记录到文件与DB与Solr

时间:2012-01-30 23:26:13

标签: java logging solr log4j slf4j

我需要一些关于SLF4J日志记录的建议。

目前,我们正在使用SLF4J日志记录(log4j绑定)作为我们的Java Web应用程序,它使用简单的ConsoleAppender。我们的下一步是研究可以保存日志的地方。

我们的应用每天处理大约100,000封邮件。每条消息生成大约60-100行日志。我们的目标是能够快速搜索和查找失败的消息(使用messageId)并找出失败的原因。

我的问题是:以下哪个是存储日志的好地方:

  • 文件(多个)
  • DB
  • Solr的

感谢。

2 个答案:

答案 0 :(得分:11)

考虑从log4j切换并使用slf4j API的logback实现 Logback有一个广泛的appenders可用列表。

我想也许您的问题更多的是关于使您的日志可搜索。答案取决于您要搜索的内容。

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

更新

根据Sebastien的建议,还有一个Graylog2 appender用于回溯。现在可以在Maven Central中找到

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

当然这取决于安装graylog2服务器。

答案 1 :(得分:0)

servlet规范中没有任何工具可以为您提供放置日志的文件系统位置。

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

您每天有大约1000万条日志条目。这意味着您需要小心资源使用。数据库通信比文件访问昂贵得多。我建议你介绍一下方法,看看你是否可以获得除夜间备份平面文件以外的任何其他内容所需的性能。