JSP,以查看日志文件(如“网尾-f”)(jsp to view log file (lik

2019-06-26 02:08发布

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

我觉得刷新是简单的使用setTimeout和Ajax请求轮询服务器。 但问题是,如何监控服务器上的文件(这是一个Log4J的日志文件 - 也许我可以使用自己的附加目的地?)更改和当AJAX请求到达时只发送更改的行?

我不知道如何检测,在修改行日志中...

Answer 1:

AJAX和轮询服务器每隔几秒钟是一个好主意,但使用彗星 / 服务器推送 / WebSocket的将是更有效的,你不会遇到任何延迟。

至于服务器端,你有几种选择:

  • 打开文件中的每个用户请求新数据时,去年底和去年送行。 你需要以某种方式表明了哪个行数据发送的最后时间,以避免多次发送相同的路线或丢失其中的一些。 使用时间戳参数AJAX调用说: 以后给我的所有日志行...

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

  • 保持开放的流记录为每个客户端文件,当客户端请求的新线,多读,你可以(当然不阻塞)。

    要好得多,但不会很好地扩展( 打开的文件太多 ,我来了)

  • 编写自定义的log4j附加目的地,并保持最近的日志在内存中。 当客户问,只是这个转储缓冲区的内容(时间戳相同的限制)

    非常强大的,但要注意内存的使用!

  • 最后考虑使用现成的像PSI-探测工具提供此功能外的开箱:

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

也可以看看:

  • 可流任意文件的内容到浏览器(活尾)Java Web应用程序
  • 在一个网页浏览器尾-f


Answer 2:

无尾/阿贾克斯但这个

JSP文件浏览器



Answer 3:

有该标签库: http://www.servletsuite.com/servlets/tailtag.htm

放入WEB-INF /罐子lib下,在WEB-INF /标签的TLD,您可以使用:

<%@ taglib uri="taglib.tld" prefix="t" %> 

<!-- read last 50 rows and print them --> 
<t:tail file="c:/webserver/log.txt" count="50" id="S"> 
  <br><%=S%> 
</t:tail>


Answer 4:

很好的解决方案,我不知道是在线程中提到,这里是另外一个我在google-发现斯太尔



Answer 5:

雅加达通用IO库提供的零售商可能会有所帮助。 零售商可以作为生产者和GUI轮询可以消费。

http://alvinalexander.com/java/jwarehouse/commons-io-2.0/src/test/java/org/apache/commons/io/input/TailerTest.java.shtml



文章来源: jsp to view log file (like “web tail -f”)