从网页查看日志
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 并不难,而且你可以从双向连接中获益。
我正在开发一个应用程序,它的一部分是有一个管理面板,可以在其中即时编辑不同的配置选项。这不是问题,可以轻松实现。
但是,有一个功能我不知道如何实现,但如果能拥有它会是一个不错的功能。从这个管理面板查看应用程序日志的可能性。类似于 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 并不难,而且你可以从双向连接中获益。