Come posso controllare un file di log e di inserimento timestamp, utilizzando Perl?

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

  •  09-10-2019
  •  | 
  •  

Domanda

Ho un'applicazione che genera i registri in accodamento, ma i registri non sono timestamped.

E 'possibile utilizzare tail -f con qualche opzione, o di uno script perl per monitorare le scritture a questo file e li prefisso con un timestamp?

Premesso che io sono in esecuzione Windows senza Cygwin, potrebbe evito utilizzando bash o qualsiasi altro Unix shell?

È stato utile?

Soluzione

se si utilizza GNU coda, allora si dovrebbe essere in grado di utilizzare GNU gawk .

C:\test>tail -F file  | gawk.exe "{s=systime(); print strftime(\"%Y-%m-%d:%H:%M:%S\",s),$0}"

Altri suggerimenti

Si potrebbe usare un ciclo while:

tail -f logfile | while read line;
do
    echo $(date) $line;
done

implica data per ogni linea però in esecuzione. È possibile utilizzare le opzioni di output formato del comando date per ottenere il formato di data e ora che si desidera.

I molto di base Perl equivalente sarebbe (script.pl):

while (<>) {
    my $date = scalar localtime;
    print $date . " " . $_;
}

tail -f logfile | perl script.pl

Può essere che si potrebbe utilizzare uno script perl con File :: coda e 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(),"] $_";
}

Sembra che il File::Tail modulo è stato progettato specificamente per la lettura in log accodato file.

Può valere la pena dare un'occhiata.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top