我有一个应用程序,它以附加模式生成日志,但日志没有带时间戳。
是否可以将tail -f
与某个选项或perl
脚本一起使用来监控对此文件的写入并在其前面加上时间戳?
鉴于我在没有Cygwin的情况下运行Windows,我可以避免使用bash或任何其他Unix shell吗?
答案 0 :(得分:2)
您可以使用while循环:
tail -f logfile | while read line;
do
echo $(date) $line;
done
虽然意味着每条线的运行日期。您可以使用date命令的format输出选项来获取所需的时间戳格式。
我非常基本的Perl等价物是(script.pl):
while (<>) {
my $date = scalar localtime;
print $date . " " . $_;
}
tail -f logfile | perl script.pl
答案 1 :(得分:2)
如果你使用的是GNU tail,那么你应该可以使用GNU gawk。
C:\test>tail -F file | gawk.exe "{s=systime(); print strftime(\"%Y-%m-%d:%H:%M:%S\",s),$0}"
答案 2 :(得分:1)
可能你可以使用带文件:: Tail和DateTime的perl脚本吗?
use File::Tail;
use DateTime;
my $ref=tie *FH,"File::Tail",(name=>$ARGV[0]);
while (<FH>) {
my $dt = DateTime->now();
print "[", $dt->dmy(), " ",$dt->hms(),"] $_";
}
答案 3 :(得分:0)
看起来File::Tail
模块专门用于读取附加的日志文件。
值得一看。