从网页查看日志

时间:2015-12-26 08:30:06

标签: java playframework playframework-2.4

我正在开发一个应用程序,其中一部分是一个管理面板,可以动态编辑不同的配置选项。这不是问题,可以很容易地实现。

然而,有一个我不知道如何实现的功能,并且是一个很好的功能。可以从此管理面板查看应用程序日志。类似于Activator UI所显示的内容,它显示来自Logger.info/Logger.debug/etc的消息。

一种解决方案是将日志作为String数组发送并显示,但是我想实现连续显示它的东西,而不需要刷新页面(再次,类似于Activator UI)。 / p>

欢迎任何建议或链接到我可能错过的文档。

1 个答案:

答案 0 :(得分:2)

也许我认为这是一项微不足道的任务(如果我错过了一些要求,请纠正我) - 但它应该相对容易实现,应该是这样的:

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

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

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

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

注意2:您当然可以尝试SSE。但我发现WS并不难,你可以获得双向连接的好处。