加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 19:28:47 所属栏目:Java 来源:网络整理
导读:如何实现包含文本区域的jsp站点,该文本区域显示(tomcat)服务器上的日志文件并自动刷新. 我认为刷新很容易使用setTimeout轮询到服务器并发送ajax请求.但问题是如何监视服务器上的文件(它是一个Log4J日志文件 – 也许我可以使用自己的appender?)进行更改并在a
如何实现包含文本区域的jsp站点,该文本区域显示(tomcat)服务器上的日志文件并自动刷新.

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

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

解决方法

ajax和每隔几秒轮询服务器是一个好主意,但使用 comet/ server-push/ websocket会更有效,你不会遇到任何延迟.

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

>每次用户请求新数据时打开文件,转到最后并发送最后一行.您需要以某种方式指示最后一次发送的行数据,以避免多次发送相同的行或丢失其中的一些行.使用AJAX调用的时间戳参数说:给我后面的所有日志行…

此解决方案效率很低,会产生大量I / O流量
>将开放流保存到每个客户端的日志文件中,当客户端要求新行时,尽可能多地阅读(当然不会阻塞).

更好,但不会很好地扩展(太多的打开文件,我来了)
>编写自定义log4j appender并将最新日志保存在内存中.当客户端询问时,只需转储此缓冲区的内容(对时间戳应用的限制相同)

非常强大,但要注意内存使用!
>最后考虑使用现成的tools like psi-probe提供开箱即用的功能:

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

也可以看看:

> Java web application that can stream the content of an arbitrary file to the browser (live tail)
> tail -f in a webbrowser

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读