我有一个在附加模式下生成日志的应用程序,但是日志没有时间戳。

可以使用吗 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 模块是专门用于在附录日志文件中读取的。

可能值得一看。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top