我想監視正在由應用程序寫入的日誌文件。我想在寫入文件之前或之後立即處理文件。我還沒有找到一種方法來檢測到達到eof後文件已被擴展。從日誌文件中讀取數據作爲單獨的應用程序正在寫入它
代碼需要在Mac和PC工作,並可以在任何語言,但我最熟悉C++和Perl。
是否有人有這樣做的最佳方式有何建議?
我想監視正在由應用程序寫入的日誌文件。我想在寫入文件之前或之後立即處理文件。我還沒有找到一種方法來檢測到達到eof後文件已被擴展。從日誌文件中讀取數據作爲單獨的應用程序正在寫入它
代碼需要在Mac和PC工作,並可以在任何語言,但我最熟悉C++和Perl。
是否有人有這樣做的最佳方式有何建議?
在Perl中File::Tail模塊不正是你所需要的。
的通用足夠的答案:
大多數語言中,對EOF,返回,沒有數據讀取。您可以在間隔後重新嘗試讀取,如果文件已經增長,此時操作系統將返回數據。
你應該能夠使用讀取尾標準IO -f
的tail -f
的essense是下面的循環:
open IN, $file;
while(1) {
my $line = <IN>;
if($line) {
#process line...
} else {
sleep(1);
seek(IN,0,1);
}
}
close IN;
的seek呼叫清除EOF標誌。
我還以爲通過發球輸出的行動,並從那裏tail'ing(或使用循環above)由三通一些使用創建的文件。
對於Java看到這樣優秀的文章
http://www.informit.com/guides/content.aspx?g=java&seqNum=226