別のアプリケーションがログ ファイルに書き込むときにログ ファイルからデータを読み取る
質問
アプリケーションによって書き込まれるログ ファイルを監視したいと考えています。ファイルが書き込まれたとき、または書き込まれた直後に、ファイルを 1 行ずつ処理したいと考えています。ファイルが eof に達した後に拡張されたことを検出する方法が見つかりませんでした。
コードは Mac と PC で動作する必要があり、どの言語でも使用できますが、私は C++ と Perl に最も精通しています。
誰かがそれを行うための最良の方法について提案を持っていますか?
解決
Perl では、 ファイル::テール モジュールはまさに必要なことを実行します。
他のヒント
十分に一般的な答え:
ほとんどの言語は、EOF になると、データが読み取られなかったという結果を返します。一定の間隔を置いてから読み取りを再試行すると、それ以降にファイルが大きくなった場合、今度はオペレーティング システムがデータを返します。
の本質 tail -f
は次のループです。
open IN, $file;
while(1) {
my $line = <IN>;
if($line) {
#process line...
} else {
sleep(1);
seek(IN,0,1);
}
}
close IN;
の 求める この呼び出しは EOF フラグをクリアすることです。
read the standard io from tail -f を使用できるはずです
私は tee 経由でアクションを出力し、その後尾引きする(またはループを使用する)ことを考えていたでしょう。 その上) ティーによって作成されたファイルを使用します。
Java については、この優れた記事を参照してください
http://www.informit.com/guides/content.aspx?g=java&seqNum=226
所属していません StackOverflow