2010-10-20 28 views

Répondre

2

si vous utilisez la queue GNU, vous devriez être en mesure d'utiliser GNU gawk.

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

C'est génial! J'ai déjà tous les binaires d'UnxUtils et je n'avais pas pensé à gawk ... merci! – Benoit

+2

télécharger l'outil GNU de 'gnuwin32.sourceforge.net/packages.html'. ceux de 'UnxUtils' sont obsolètes – ghostdog74

+0

Je l'ai utilisé pour mettre à jour les journaux telnet avec l'horodatage, mais le gawk n'ajoute pas l'horodatage. C: \ tail.exe -F "C: \ Test.txt" | C: \ gawk.exe "{s = systime(); imprime strftime (\"% Y-% m-% d:% H:% M:% S \ ", s), $ 0}" – buddingspacer

2

Vous pouvez utiliser une boucle while:

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

Implique en cours Date pour chaque ligne bien. Vous pouvez utiliser les options de sortie de format de la commande date pour obtenir le format d'horodatage souhaité.

I équivalent Perl très basique serait (script.pl):

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

tail -f logfile | perl script.pl 
+0

hah. J'ai oublié de dire que j'utilise Windows, et que je voudrais éviter une installation Cygwin :) Merci quand même! – Benoit

+0

@Benoit - Pas de soucis - peut-être retag? Quelqu'un sera à chaque minute avec la version Perl. –

+0

le script perl est très bon aussi ... J'aimerais pouvoir accepter plus d'une réponse. – Benoit

1

Peut-être pourriez-vous utiliser un script Perl avec File :: Tail et 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(),"] $_"; 
} 
0

Il ressemble le module File::Tail a été conçu spécifiquement pour la lecture dans des fichiers journaux ajoutées.

Cela peut valoir le coup d'oeil.