所以我正在编写一个应用程序,它将接受来自许多其他应用程序的日志条目。我们主要使用log4j
.
由于这些应用程序位于不同的机器上,我希望有一个 Web 服务来接受来自每个应用程序的 POST 数据。然后我们可以在其中进行搜索等。
我意识到有像 Loggly 这样的服务可以处理这个问题,但我想自己编写(主要是为了我们的安全目的和公司不喜欢第三方提供商的日志信息)。
无论如何,我成功地让我自己的自定义 HttpAppender 工作。这样每个应用程序都会将消息发送到 Web 服务。
但在我开香槟之前,我意识到通过 HTTP 直接发布可能是一件坏事,因为其中一些应用程序会在日志中生成数百万行。所以我想要的最后一件事是我的 HttpAppender 降低了一些 T1 线或其他东西。
所以我的想法是以某种方式缓冲 HTTP POST,然后定期在单个帖子中发送这些缓冲区。因此,与许多较小的帖子相比,更少的大帖子。
当然,在同一台机器上本地缓冲类似 Reddis/memcached 会有所帮助,但我必须假设我不能使用外部缓存(在同一台服务器上)。所以我必须缓存在appender的内存/进程中。
我是否在缓冲这些 HTTP 帖子的写入轨道上?或者,我应该将缓冲区写入日志文件,然后定期发布这些日志文件吗?