我想监视正在由应用程序写入的日志文件。我想在写入文件之前或之后立即处理文件。我还没有找到一种方法来检测到达到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