追加モードでログを生成するアプリケーションがありますが、ログにタイムスタンプが付けられていません。
tail -f
いくつかのオプション、またはperl
このファイルへの書き込みを監視し、タイムスタンプをプレフィックスとして付けるスクリプトを使用することは可能ですか?
CygwinなしでWindowsを実行している場合、bashやその他のUnixシェルの使用を避けることはできますか?
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
GNUテールを使用している場合は、 GNUgawkを使用できるはずです。
C:\test>tail -F file | gawk.exe "{s=systime(); print strftime(\"%Y-%m-%d:%H:%M:%S\",s),$0}"
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(),"] $_";
}
File::Tail
モジュールは、追加されたログファイルを読み取るために特別に設計されたようです。
一見の価値があるかもしれません。