【问题标题】:SLF4J logging to file vs. DB vs. SolrSLF4J 记录到文件 vs. DB vs. Solr
【发布时间】:2012-01-30 23:26:13
【问题描述】:

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

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

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

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

  • 文件
  • 数据库
  • 太阳能

谢谢。

【问题讨论】:

    标签: java logging solr log4j slf4j


    【解决方案1】:

    考虑从 log4j 切换并使用 slf4j API 的 logback 实现 Logback 有大量可用的appenders 列表。

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

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

    更新

    正如 Sebastien 所建议的,还有一个 Graylog2 appender 用于 logback。现在在 Maven Central 中可用

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

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

    【讨论】:

    • 还有 Graylog,但我认为它的扩展性不是很好。
    • 我们的搜索会很简单:messageId + "some search term"。我将研究 logback+DB 选项。
    【解决方案2】:

    servlet 规范中没有提供用于放置日志的文件系统位置的工具。

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

    您每天有大约 1000 万条日志条目。这意味着您需要小心使用资源。数据库通信比文件访问昂贵得多。我建议您对这些方法进行概要分析,看看是否可以获得您需要考虑的性能,而不是每晚备份的平面文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-14
      • 2011-07-08
      • 1970-01-01
      • 2012-03-17
      相关资源
      最近更新 更多