从日志文件中读取数据作为单独的应用程序正在写入中
时间:2020-03-05 18:53:27 来源:igfitidea点击:
我想监视应用程序正在写入的日志文件。我想在写入文件时或者之后不久逐行处理文件。我没有找到一种方法来检测文件到达eof后是否已扩展。
该代码需要能够在Mac和PC上运行,并且可以使用任何语言,尽管我最熟悉C ++和Perl。
有人对最佳方法提出建议吗?
解决方案
回答
在Perl中,File :: Tail模块完全可以满足需求。
回答
一个足够通用的答案:
在EOF上,大多数语言都返回未读取任何数据。我们可以在一定时间间隔后重试读取,如果文件从那以后开始增长,则操作系统将返回数据。
回答
我们应该可以使用tail -f读取标准io
回答
tail -f的本质是以下循环:
open IN, $file; while(1) { my $line = <IN>; if($line) { #process line... } else { sleep(1); seek(IN,0,1); } } close IN;
搜寻呼叫将清除EOF标志。
回答
我曾想过通过tee输出动作,然后通过tee(或者使用上面的循环)对tee创建的文件进行一些使用。