2016-07-04 36 views
0

我在服务器A上有一个REST服务。服务正在做一些东西并记录一些消息,这要归功于log4j。将日志从REST服务发送到HTML页面

另外,我有一个服务器B上的网页,通过AJAX调用服务并获得响应。除了接收到响应(对我来说工作正常)之外,我想在页面上打印来自服务器端的日志消息。

换句话说,我希望每当服务器A端有新的日志消息时,视图就会显示它。

任何想法,以实现这一目标?

编辑: 如何使用websocket从log4j套接字appender检索日志?

+0

在db中存储日志听起来更容易 – HRgiger

+1

log4j是一个开发人员的语言级别。不要将它与业务需求混合在一起。只需实现另一个业务级别的东西,通过显式地发送信息。 – kan

+0

@kan有好的一点 – HRgiger

回答

0

我终于找到了解决我的问题的方法:

我创建了一个单例记录器。每次我想记录一条消息时,我都会获取记录器的实例,并将新消息添加到日志的ConcurrentLinkedList。

另一方面,我创建了一个新的休息服务。我每秒钟都会用ajax查询来调用这个服务。它删除列表的日志消息并返回它们。视图显示它们。

0

您将创建一个REST端点来检索原始日志数据为text/plain。这可能是一些如下:

GET /logs HTTP/1.1 
Accept: text/plain 

你也可以提供一些查询字符串参数来筛选按日期和时间日志,如下:

GET /logs?from=2016-07-03T10:00:00Z&to=2016-07-04T10:00:00Z HTTP/1.1 
Accept: text/plain 

那么你的客户端可以请求这样的端点,检索他们想要的数据并将日志显示在HTML页面中。

如果您希望在服务器端渲染HTML页面,而不是接受text/plain,请接受text/html


对于实时记录,您可以考虑WebSockets

+0

然后如果我想实时检索日志,我可以每秒执行一次ajax请求到端点,并更新显示html页面上日志的div。你认为这是一个很好的解决方案吗? – L01c

+1

@ L01c对于实时,你可以考虑websockets。 –

相关问题