我遵循了一个 SO 接受的关于如何从这里从 /var/log/gateway 读取 Django 中的日志文件的答案,并且我设法在终端上输出文件,就像这里一样。
2013-05-09T11:15:02.539091+08:00 localhost gateway[5205]: System starting up...
2013-05-09T12:57:44.160246+08:00 localhost gateway[5205]: System start complete.
2013-05-09T15:13:47.428553+08:00 localhost gateway[4777]: * Unable to connect to device /home/smartsensor1. Device may be offline. *
下一步是,我想输出日志文件并以 html 格式显示,我对原始代码进行了轻微修改,如下所示。
def Logs(request):
with open('../../../../../var/log/gateway') as f:
while True:
line = f.readline()
if line:
print line
return HttpResponse(line)
所以在客户端,我根据另一个 SO 接受的答案在这里放置 Ajax 。
$.ajax({
type: "GET",
url : "{% url WebServiceApp.logging.Logs %}",
success: function (data) {
$("#output").append(data);
setTimeout("doUpdate()", 2000);
}
});
}
setTimeout("doUpdate()", 2000);
这样,来自 Ajax 的输出数据就会继续显示日志文件的第一行。在这种情况下,是这样的
2013-05-09T11:15:02.539091+08:00 localhost gateway[5205]: System starting up...
2013-05-09T11:15:02.539091+08:00 localhost gateway[5205]: System starting up...
2013-05-09T11:15:02.539091+08:00 localhost gateway[5205]: System starting up...
我知道会发生这种情况,因为每次 ajax 访问服务器时,服务器都会执行它需要做的事情并发送回作为日志文件第一行的输出并通过 HttpResponse 输出并完成循环,但它从来没有机会做另一行,因为它已经完成了。当另一个查询完成时,它会一次又一次地做同样的事情。
所以可能的解决方案是客户端询问服务器一次,服务器保持逐行输出日志文件并将其发送给客户端。我不确定这是否可能,所以在这里我向任何专家询问如何可能实现我可以逐行输出日志文件的结果/