Tom*_*icz 11
ajax并每隔几秒轮询一次服务器是一个好主意,但使用comet/server-push/websocket会更有效,你不会遇到任何延迟.
关于服务器端,您有几个选择:
每次用户请求新数据时打开文件,转到最后并发送最后一行.您需要以某种方式指示最后一次发送的行数据,以避免多次发送相同的行或丢失其中的一些行.使用AJAX调用的时间戳参数说:给我后面的所有日志行...
此解决方案效率很低,会产生大量I/O流量
保持开放流到每个客户端的日志文件,当客户端要求新行时,尽可能多地读取(当然没有阻塞).
更好,但不会很好地扩展(太多的打开文件,我来了)
编写自定义log4j appender并将最新日志保存在内存中.当客户端询问时,只需转储此缓冲区的内容(对时间戳应用的限制相同)
非常强大,但要注意内存使用!
最后考虑使用现成的工具,如psi-probe,提供开箱即用的功能:
psi-probe http://psi-probe.googlecode.com/svn/wiki/Features/log-tail.png