11

ログファイルがあり、UNIX の「tail -f filename」コマンドのように機能する (ファイルに書き込まれたときに新しいログ行を表示する) Web ページ (おそらく Python ですが、厳密ではない) を作成したいと考えています。

そのため、ユーザーはブラウザでログを継続的に見ることができます。

これをどのように実装しますか?

4

4 に答える 4

9

Tailonは、とりわけtail -f同様の機能を提供する python webapp です。さらに、wtee (tailon の姉妹プロジェクト) は、すべての stdin をブラウザーで表示できるようにすることができます。その使用法は unixteeコマンドと同じです。tail -f filename | wtee

于 2013-06-20T16:51:36.917 に答える
2

jquery (.ajax) と php (json) を使用してこれを実装しました。

流れは主に次のとおりです。

  • ユーザーがブラウザで HTML ページを呼び出す
  • html ページには、必要な機能を実行するサーバー上のリモート php スクリプトへの最初の jquery .ajax 呼び出しが含まれています。
  • 新しい行が利用できない場合、php スクリプトは単にループし (ajax 呼び出し元が待機する間、つまり longpolling)、必要に応じてタイムアウトするように構成できます (適切な値をクライアントの ajax 呼び出し関数に返します)。
  • 新しい行が php スクリプトによって検出されると、それらは json 応答にラップされ、ブラウザーの ajax 呼び出し関数に送り返され、ページの既存のコンテンツに追加されます。
  • JavaScript 関数は、同じ ajax 呼び出しを再帰的に行い、事実上無限ループに陥ります。

私の特定の実装では、次のことを行いました。

  • クライアントでの ajax 呼び出しとサーバーでの php スクリプトの両方に、たとえば接続の切断などを処理するためのタイムアウトがあります。また、ajax 呼び出しが永久に待機しないようにします。
  • ajax 呼び出しは、参照として行番号をサーバーに渡し、最後に受信した行番号をサーバーに伝えます。これにより、サーバーはどの行を返すかを認識します。最初の値はゼロで、サーバーはファイルの最後の 10 行をすぐに返します。
  • PHPスクリプトが呼び出されると、クライアントの最後の行番号を使用してファイルをすばやくチェックします。新しい行が既に追加されている場合は、すぐにそれらを返します。そうでない場合は、ループ (1 秒) に入り、代わりにファイル ctime (または mtime) をチェックして、新しい行がいつ書き込まれたかを検出します。これは、毎秒ファイル内の行数 (膨大になる可能性があります) よりも効果的です。

ここで、jquery と php を使用した longpolling/realtime テールの実装を参照してください: 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 に答える