1

追加モードでログを生成するアプリケーションがありますが、ログにタイムスタンプが付けられていません。

tail -fいくつかのオプション、またはperlこのファイルへの書き込みを監視し、タイムスタンプをプレフィックスとして付けるスクリプトを使用することは可能ですか?

CygwinなしでWindowsを実行している場合、bashやその他のUnixシェルの使用を避けることはできますか?

4

4 に答える 4

2

whileループを使用できます。

tail -f logfile | while read line;
do
    echo $(date) $line;
done

ただし、各行の実行日を意味します。dateコマンドのフォーマット出力オプションを使用して、必要なタイムスタンプフォーマットを取得できます。

私の非常に基本的なPerlの同等物は(script.pl)です:

while (<>) {
    my $date = scalar localtime;
    print $date . " " . $_;
}

tail -f logfile | perl script.pl
于 2010-10-20T09:46:39.107 に答える
2

GNUテールを使用している場合は、 GNUgawkを使用できるはずです。

C:\test>tail -F file  | gawk.exe "{s=systime(); print strftime(\"%Y-%m-%d:%H:%M:%S\",s),$0}"
于 2010-10-20T09:53:38.247 に答える
1

File ::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(),"] $_";
}
于 2010-10-20T09:57:49.080 に答える
0

File::Tailモジュールは、追加されたログファイルを読み取るために特別に設計されたようです。

一見の価値があるかもしれません。

于 2010-10-20T09:58:29.157 に答える