Spring boot Spring boot web应用程序的流日志消息

Spring boot Spring boot web应用程序的流日志消息,spring-boot,spring-amqp,spring-websocket,spring-logback,Spring Boot,Spring Amqp,Spring Websocket,Spring Logback,这个问题是关于我应该使用什么工具来完成这项任务的一般性建议,并可能向我介绍一些相关的教程 我有一个SpringBootWeb应用程序,它在运行期间会将日志消息生成到数据库中。这个REST应用程序正在开发一个JavaScript管理工具,它的一个功能是实时显示日志消息。也就是说,当用户在日志显示页面上时,他应该看到新的日志消息出现,而不必重新设计页面 我的问题是: 应该使用什么为某个端点上的javascript客户机提供这一点?我现在正在看这些spring启动程序:websocket、redis

这个问题是关于我应该使用什么工具来完成这项任务的一般性建议,并可能向我介绍一些相关的教程

我有一个SpringBootWeb应用程序,它在运行期间会将日志消息生成到数据库中。这个REST应用程序正在开发一个JavaScript管理工具,它的一个功能是实时显示日志消息。也就是说,当用户在日志显示页面上时,他应该看到新的日志消息出现,而不必重新设计页面

我的问题是:

  • 应该使用什么为某个端点上的javascript客户机提供这一点?我现在正在看这些spring启动程序:websocket、redis、amqp。我以前没有用过这些
  • 当日志消息在应用程序内部生成时,我应该如何“捕获”它们?因此,我可以将它们与选择的解决方案一起发送给客户
我并不是真的在寻找一种周期性查询类型的解决方案,而是一个服务器,它可以按看起来的解决方案来推送数据


非常感谢您的建议和代码示例。

除非您使用能够处理大量写请求的数据库(如Apache Cassandra),否则在数据库中存储日志通常不是一个好的选择。然而,从数据库流式传输数据并不是最直观的做法

一种现代的替代方法是使用消息传递系统(如ApacheKafka)将日志从生产系统流式传输到多个订阅系统。有多种方法可以实现这一目标。例如,对于Spring Boot应用程序中的流日志,您可以使用特殊的log4j appender(请参阅和示例)。为了能够在web浏览器中实时显示日志,您需要另一个后端系统,该系统将接收来自Kafka主题的日志记录,并通过websockets将其转发给JavaScript web客户端,最有可能使用发布者/订阅者模型


也可以考虑使用服务器发送事件(SSE)而不是WebSoCusits。由于您只有单向消息流(日志从后端系统流式传输到浏览器中的javascript客户端,但不是相反),因此SSE可以作为WebSocket的替代品。WebSocket比SSE更难操作,通常在后端使用更多的资源。和往常一样,您需要在权衡之间做出选择(请参阅)。

WebSocket看起来很适合您想要实现的目标。由于这是链接到日志的,也许您可以检查elastic search插件的Websocket输出。所以你不必自己重写所有内容。你有点误解了我的帖子。对这个功能的需求最近才出现,我还没有实现任何东西来实现这一点。我只有剩下的部分,它们现在创建了日志。我提到这三件事可能是实现这些目标的潜在途径,但我以前没有使用它们,这就是我寻求建议的原因。SSE-s是个好主意,谢谢你提醒我这些。我的另一个大问题是我应该如何拦截日志消息。我明白了。我添加了使用ApacheKafka进行流日志的想法。