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