许多Java应用程序的集中日志记录:Syslog vs JMS vs Http vs Local文件

时间:2010-03-06 13:51:33

标签: java logging rest jms syslog

我希望我的所有应用程序日志都集中在一起(理想情况下是近乎实时的)。我们将使用Log4 Appender。我应该使用哪一个:

  1. 在JMS队列中发送日志事件
  2. Syslog / syslog-ng
  3. 写入本地文件并使用rsync(每3秒)复制日志
  4. 对集中式REST Http服务执行POST
  5. 你在使用哪一个?

5 个答案:

答案 0 :(得分:3)

取决于您的要求。记录到队列(如在JMS中)为您提供了最灵活的选项,因为日志消息一旦写入队列就可以返回日志操作。然后,您可以自由地让另一个进程将这些日志消息从队列中删除,并将它们写入首选的日志存储(数据库,文件系统......)。

(轻微)缺点是您的日志消息将略微落后于正在记录的系统,但即使使用基于文件的日志记录,也几乎总是如此。

答案 1 :(得分:2)

这可能有点矫枉过正,但你看过Splunk了吗?对于Java应用程序,我使用Log4J或SLF4J来记录文件,然后Splunk可以聚合日志并使它们可搜索。

答案 2 :(得分:1)

我不熟悉Log4(Log4j?),但它有数据库追加器吗?这将提供您所需的集中化,并且无需复制日志。

答案 3 :(得分:0)

这实际上在很大程度上取决于你想要的东西。我不认为syslog不是应用程序日志记录的好选择,它更适合基础架构日志。在不了解太多细节的情况下,您列出的所有4个选项都可以。我们使用this

答案 4 :(得分:0)

btw,log4j确实有AsyncAppender,它使用队列和专用的消费者线程从中进行记录

相关问题