11

我有一个日志文件,并想创建一个网页(可能是 Python,但不严格),它的工作原理与 unix“tail -f 文件名”命令的工作原理非常相似(在写入文件时显示新的日志行)。

这样用户将在浏览器中不断看到登录权。

你将如何实现这一点?

4

4 回答 4

9

Tailon是一个 python webapp,除其他外,提供tail -f类似的功能。此外,wtee(tailon 的姊妹项目)可以使其所有标准输入在浏览器中可见 - 它的使用与 unixtee命令相同:tail -f filename | wtee

于 2013-06-20T16:51:36.917 回答
2

我使用 jquery (.ajax) 和 php (json) 实现了这个。

流程基本上如下:

  • 用户在浏览器上调用 html 页面
  • html 页面包含对服务器上执行所需功能的远程 php 脚本的初始 jquery .ajax 调用,在这种情况下,检索文件的最后几行“tailed”
  • 如果没有可用的新行,则 php 脚本只是循环(当 ajax 调用者等待时,即 longpolling),并且可以在必要时配置为超时(将适当的值返回给客户端上的 ajax 调用函数)
  • 当 php 脚本检测到新行时,会将它们包装在 json 响应中并发送回浏览器上的 ajax 调用函数,然后将其附加到页面的现有内容中。
  • 然后,javascript 函数将递归地进行相同的 ajax 调用,实际上处于无限循环中。

在我的具体实现中,我做了以下事情:

  • 客户端上的 ajax 调用和服务器上的 php 脚本都有超时来处理,例如,很好地断开连接。还确保 ajax 调用不会永远等待。
  • ajax 调用将一个行号作为参考传递回服务器,以告诉它它收到的最后一个行号是什么,因此服务器知道要返回哪些行。初始值为零,服务器会立即返回文件的最后 10 行
  • 当调用 php 脚本时,它使用客户端的最后一行号对文件进行快速检查;如果已经添加了新行,它会立即返回它们,否则它会处于循环中(1 秒),然后检查文件 ctime(或 mtime)以检测何时写入新行。这比每秒计算文件中的行数(可能很大)更有效。

在此处使用 jquery 和 php 查看我的 longpolling/realtime tail 实现: https ://github.com/richardvk/web_file_tail

于 2015-10-02T05:07:18.920 回答
1

Scullog,具有将本地驱动器共享给浏览器的能力。通过浏览器上的 Socket.IO 流式传输日志文件。它可以在任何平台上运行,例如 windows/linux/mac。它作为服务或独立模式运行。

于 2016-10-03T17:55:24.737 回答
0

您阅读文件并将最后几行打印到页面上。您也可以使用 GET 变量来定义要输出的行数,使用 ?n=x 其中 x 是行数。

于 2012-09-11T22:00:32.587 回答