小编典典

jsp以查看日志文件(例如“ web tail -f”)

ajax

您将如何实现一个包含文本区域的jsp站点,该文本区域显示(tomcat)服务器上的日志文件并自动刷新。

我认为刷新很容易使用setTimeout轮询到服务器并发送ajax请求。但是问题是如何监视服务器上的文件(它是一个Log4J日志文件-
也许我可以使用自己的附加程序?)进行更改,并在ajax请求到达时仅发送更改后的行?

我不知道如何检测日志中更改的行…


阅读 298

收藏
2020-07-26

共1个答案

小编典典

ajax并每隔几秒钟轮询一次服务器是一个好主意,但是使用Comet / server-push / websocket会更有效,并且不会遇到任何延迟。

关于服务器端,您有几种选择:

  • 每次用户请求新数据时打开文件,请移至末尾并发送最后几行。您需要以某种方式指出最后一次发送的行数据,以避免多次发送相同的行或丢失其中的一些行。在AJAX调用中使用时间戳参数来说: 在…之后给我所有日志行

该解决方案非常无效,并且会产生大量I / O流量

  • 保持开放流到每个客户端的日志文件,并且当客户端要求换行时,请尽可能多地阅读(当然不会阻塞)。

好多了,但扩展性不好( 打开的文件太多 ,我来了)

  • 编写一个自定义的log4j附加程序,并将最新的日志保留在内存中。当客户询问时,只需转储该缓冲区的内容(对时间戳的限制相同)

非常强大,但请注意内存使用情况!

psi探针http://psi-probe.googlecode.com/svn/wiki/Features/log-
tail.png

2020-07-26