我有这个问题,我只是把它扔出去。我正在为基于Spring的REST API服务器实现一个小的日志记录功能,用于记录所有请求。 我希望有1000个用户使用这个API,因此使用阻塞的i / o记录器,它会减慢一切。我有两种方法来解决这个问题: 1.使用内存中的arrylist建立异步记录器。然后使用spring scheduler定期将其刷新到日志文件中。 2.使用JMS并将日志发送到队列。让队列异步处理日志记录。
有人在春天之前做过这个吗。虽然我是选项2,有没有更好的方法来做到这一点?需要一些专家建议。谢谢大家!
更多信息 - 我认为同步日志记录将成为一个瓶颈因为这个REST API被前端RoR应用程序使用。因此,用户的一个会话肯定会导致100次API调用频繁发生。我正在记录实际请求以及POST中发送的JSON。
答案 0 :(得分:3)
有人在春天之前做过这个吗。
不是很奇怪,是的 - Asynchronous Logging Using Spring
文章提到如果你不想丢失任何日志事件,那么JMS将是最佳选择 - 否则坚持Async对于高容量日志记录是有意义的。
答案 1 :(得分:0)
如果您真的想构建自己的记录器,我建议您查看akka,它比JMS设置要容易得多。
您可以在本地使用它(使用本地计算机的所有CPU核心),甚至可以使用远程代理。