PERLを使用して、ログファイルを監視してタイムスタンプを挿入するにはどうすればよいですか?
質問
付録モードでログを生成するアプリケーションがありますが、ログはタイムスタンプではありません。
使用することは可能ですか? tail -f
いくつかのオプション、またはa perl
監視するスクリプトこのファイルに書き込みをして、タイムスタンプをプレフィックスしますか?
CygwinなしでWindowsを実行していることを考えると、Bashや他のUnixシェルの使用を避けることはできますか?
解決
GNUテールを使用している場合は、GNUを使用できるはずです ゴーク.
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
ファイル:: 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
モジュールは、追加されたログファイルで読み取るために特別に設計されました。
見てみる価値があるかもしれません。
所属していません StackOverflow