许多 Java 应用程序的集中式日志记录:系统日志 vs JMS vs Http vs 本地文件

2022-09-04 04:25:41

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

  1. 在 JMS 队列中发送日志事件
  2. 系统日志 / 系统日志-ng
  3. 写入本地文件并使用 rsync(每 3 秒)复制日志
  4. 对集中式 REST Http 服务执行 POST 操作

您使用的是哪一个?


答案 1

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

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


答案 2

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