从网页查看日志

View log from a web page

我正在开发一个应用程序,它的一部分是有一个管理面板,可以在其中即时编辑不同的配置选项。这不是问题,可以轻松实现。

但是,有一个功能我不知道如何实现,但如果能拥有它会是一个不错的功能。从这个管理面板查看应用程序日志的可能性。类似于 Activator UI 在其中显示来自 Logger.info/Logger.debug/etc.

的消息的内容

一个解决方案是将日志作为字符串数组发送并显示,但是我想实现一些连续显示它的东西,而不需要刷新页面(同样,类似于 Activator UI).

欢迎提供我可能遗漏的任何建议或文档链接。

也许我认为这是一项微不足道的任务(如果我遗漏了一些要求,请纠正我)- 但它应该相对容易实施,并且应该像这样进行:

  • 在应用程序生命周期中使用 Logger 记录消息
  • 日志存储在<yourproject>/logs/application.log(默认)
  • 定义一些 reader - 实现由你决定 - 你可以使用 bare FileInputStream,你可以有一个特殊的 Akka actor 来处理这个,你可以使用一些库或任何你想象的
  • 在管理区显示文件读取过程的结果

编辑: 可能的实施(关于 OP 的评论):

  • 使用 Akka 完成任务。创建一个正在处理日志文件读取的 Actor。
  • 在 Akka 中,您可以安排要发送给演员的消息。每次您的演员收到消息时,他都会读取日志文件 - 您可以将此间隔设置为可配置(想想 application.conf
  • 现在通过添加 WebSocket 功能来增强您的应用程序。好处是您可以实现 actor,以便它处理 WebSocket 连接,从而 "writes" 到 WebSocket 通道。这样,只有在服务器端读取数据时,您才会在客户端接收数据。

注1:这都是为了简单起见。实际上,您可能会(至少)使用两个参与者 - 一个用于处理 WS 连接,一个用于文件日志 IO 操作。

注2:当然可以试试SSE。但我发现 WS 并不难,而且你可以从双向连接中获益。