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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top