Wie kann ich eine Protokolldatei und Insert-Zeitstempel überwachen, Perl?
Frage
Ich habe eine Anwendung, die Protokolle in Zufügen-Modus erzeugt, aber die Protokolle werden nicht timestamped.
Ist es möglich, tail -f
mit einiger Option zu verwenden, oder einem perl
Skript schreibt in diese Datei zu überwachen und sie mit einem Zeitstempel Präfix?
Da ich Windows ohne Cygwin laufen lasse, könnte ich nicht zu verwenden bash oder andere Unix-Shell?
Lösung
Wenn Sie GNU Schwanz verwenden, dann sollten Sie in der Lage sein, GNU verwenden gaffen .
C:\test>tail -F file | gawk.exe "{s=systime(); print strftime(\"%Y-%m-%d:%H:%M:%S\",s),$0}"
Andere Tipps
Sie könnten eine while-Schleife verwenden:
tail -f logfile | while read line;
do
echo $(date) $line;
done
Impliziert Laufdatum obwohl für jede Zeile. Sie könnten die Formatausgabeoptionen des Datums-Befehl das Zeitformat Sie wollen bekommen.
ich sehr grundlegende Perl äquivalent wäre (script.pl):
while (<>) {
my $date = scalar localtime;
print $date . " " . $_;
}
tail -f logfile | perl script.pl
sein kann, könnten Sie einen Perl-Skript mit File :: Schwanz und 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(),"] $_";
}
It looks like the File::Tail
module was designed specifically for reading in appended log files.
It may be worth a look.