题
我有一个在附加模式下生成日志的应用程序,但是日志没有时间戳。
可以使用吗 tail -f
有一些选项或 perl
要监视此文件的脚本并用时间戳将其前缀?
鉴于我在没有Cygwin的情况下运行Windows,我是否可以避免使用Bash或任何其他Unix Shell?
解决方案
如果您使用GNU尾巴,那么您应该能够使用GNU gawk.
C:\test>tail -F file | gawk.exe "{s=systime(); print strftime(\"%Y-%m-%d:%H:%M:%S\",s),$0}"
其他提示
您可以使用一段时间循环:
tail -f logfile | while read line;
do
echo $(date) $line;
done
虽然意味着每行的运行日期。您可以使用日期命令的格式输出选项来获取所需的时间戳格式。
我非常基本的perl等效是(script.pl):
while (<>) {
my $date = scalar localtime;
print $date . " " . $_;
}
tail -f logfile | perl script.pl
您可能可以将perl脚本与file :: tail and datetime一起使用吗?
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(),"] $_";
}
看起来像 File::Tail
模块是专门用于在附录日志文件中读取的。
可能值得一看。
不隶属于 StackOverflow