PERLを使用して、ログファイルを監視してタイムスタンプを挿入するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/3976506

  •  09-10-2019
  •  | 
  •  

質問

付録モードでログを生成するアプリケーションがありますが、ログはタイムスタンプではありません。

使用することは可能ですか? 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 モジュールは、追加されたログファイルで読み取るために特別に設計されました。

見てみる価値があるかもしれません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top