ここから /var/log/gateway から Django のログ ファイルを読み取る方法に関する SO の受け入れられた回答に従い、ここのように端末にファイルを出力することができました。
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 が受け入れた回答hereに基づいて、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 を介して出力し、サイクルを完了したためです。すでに完了しているため、別の行を実行します。別のクエリが実行されると、同じことを何度も繰り返します。
したがって、可能な解決策は、クライアントがサーバーに1回問い合わせ、サーバーがログファイルを1行ずつ出力し続け、それをクライアントに送信することです。これが可能かどうかさえわからないので、ここで、ログファイルを行ごとに出力できる結果を達成する方法について専門家に尋ねています/