2016-06-22 7 views
0

現在、埋め込みシステムのウェブサイトを作成しています。目的は、ログファイルを読み込み、ログファイルの内容でjsonファイルを変更することです。Javascript - 頻繁に更新されるファイルから読む

ログファイルは常にWebアプリケーションがNodeJsとsocket.ioで行われる別のプログラム

によって書き込まれています。おそらく、htmlページにリアルタイムでそれらのログデータを表示する別の方法はありますか?

ログファイルを開いたばかりの場合は、ロックしますか?私はそれを開き、アルゴリズムを実行し、1秒でそれを閉じる時間がありますか?

開いたままにして、最後の行を常に読み取る方法はありますか?

私はこの投稿を見つけました: "Reading from a frequently updated file"しかし、それはPythonです。

追加情報 ログファイルに書き込むプログラムを更新することができます。 1つの行(大きなログファイルの最後の行)でファイルを編集することが考えられます。このユニークな行は毎秒更新されます

+0

Linuxの** tail **コマンドのようなものをお探しですか?ログファイルが大きくなるにつれて、ログファイルのサイズを変更するには時間がかかります(実際にはログファイルのサイズが数MB以上になる可能性があると考えられます)。 – FDavidov

+0

はい、サー、テールですが、毎秒新しい最後の行だけが必要です – Weedoze

+0

Hummm ....解決策があるかもしれません(以下のカルロス氏が提案したようなものかもしれませんが...どのくらいのログファイルになる可能性がありますか?ファイルの "TAIL"を得ることは、最後のレコードを見つけるために実際にそれをスキャンすることを意味するかもしれません。ログを書き込むプログラムを制御しているなら、このプログラムは2回書くことをお勧めします。 2番目の時間は、前回の内容を置き換えて、最後に書き込まれた行を別のファイルに書き込みますが、これは少し醜いかもしれませんが、パフォーマンス面ではおそらく最適な解決策になります。 – FDavidov

答えて

1

Node.jsを使用する場合は、node-tailを使用することをお勧めします。

ファイルを「テール」することができます。ドキュメントによれば、これはあなたがそれを行うだろう方法です。また

Tail = require('tail').Tail; 

tail = new Tail("fileToTail"); 

tail.on("line", function(data) { 
    console.log(data); 
}); 

tail.on("error", function(error) { 
    console.log('ERROR: ', error); 
}); 

、あなたはNode.js.が付属していますfs.watchFileを使用することができます

+0

Thxです。私はnode-tailに慣れていない。ログが新しい行で更新されると、 "tail.on("行 "..."は1秒ごとに呼び出されますか?) – Weedoze

+0

テールは、ファイルが大きくなると追加されたデータを出力する "tail -f"コマンドをシミュレートします。 1秒ごとに呼び出されるのではなく、ファイルが大きくなると、イベントは非同期です。 –

+0

編集後、1行にnode-tailを使用する必要がありますか? – Weedoze

関連する問題