Веб-реализация "tail -f filename"? - PullRequest
7 голосов
/ 02 ноября 2010

У меня есть файл журнала и я хочу создать веб-страницу (возможно, Python, но не строго), которая будет работать так же, как работает команда unix "tail -f filename" (показывать новые строки журнала, когда они записываются в файл).

Так что пользователь будет постоянно видеть журнал прямо в браузере.

Как бы вы это реализовали?

Ответы [ 4 ]

9 голосов
/ 20 июня 2013

Tailon - это веб-приложение на python, которое, помимо прочего, обеспечивает tail -f функциональность.Кроме того, wtee (родственный проект tailon) может сделать все его stdin видимыми в браузере - его использование идентично команде unix tee: tail -f filename | wtee

1 голос
/ 03 октября 2016

Scullog , с возможностью совместного использования локального диска для браузера Поток файла журнала через Socket.IO через браузер. Он работает на любой платформе, такой как Windows / Linux / Mac. Это работает как сервис или автономный режим.

0 голосов
/ 02 октября 2015

Я реализовал это, используя jquery (.ajax) и php (json).

Поток по сути следующий:

  • пользователь вызывает html-страницу в своем браузере.
  • html-страница содержит начальный jquery .ajax-вызов к удаленному php-скрипту на сервере, который выполняет необходимую функцию, в данном случае,Извлечение нескольких последних строк файла с хвостами
  • , если новые строки недоступны, скрипт php просто зацикливается (пока клиент ajax ожидает, то есть longpolling) и может быть настроен на тайм-аутесли необходимо (возвращая соответствующее значение обратно в вызывающую функцию ajax на клиенте)
  • когда новые строки обнаруживаются скриптом php, они переносятся в ответ json и отправляются обратно в вызывающую функцию ajax набраузер, который затем добавляет его к существующему содержимому страницы.
  • Функция javascript затем рекурсивно сделает тот же самый вызов ajax, фактически находясь в бесконечном цикле.

В моемконкретной реализации, я сделал следующее:

  • и вызов ajax на клиенте И скрипт php наНапример, у сервера есть тайм-ауты для корректной обработки разорванных соединений.Также гарантирует, что вызов ajax не будет ждать вечно.
  • вызов ajax передает номер строки в качестве ссылки обратно на сервер, чтобы сообщить ему, какой номер последней строки был получен, поэтому сервер знает, какие строкивернуть.Первоначально значение равно нулю, и сервер немедленно вернет последние 10 строк файла
  • при вызове сценария php, он использует номер последней строки клиента для быстрой проверки файла;если новые строки уже были добавлены, они немедленно возвращают их, если нет, то находятся в цикле (1 секунда), а затем вместо этого проверяют файлы ctime (или mtime), чтобы определить, когда пишутся новые строки.Это более эффективно, чем подсчет строк в файле (которые могут быть огромными) каждую секунду.

Посмотрите мою реализацию длинного опроса / хвоста реального времени с использованием jquery и php здесь: https://github.com/richardvk/web_file_tail

0 голосов
/ 12 сентября 2012

Вы читаете файл и распечатываете последние строки на странице. Вы также можете использовать GET-переменную, чтобы определить количество строк для вывода, используя? N = x, где x - количество строк.

...