So fügen Sie jeder Zeile einer fortlaufend geschriebenen Protokolldatei eine Datumszeichenfolge hinzu

7

Mit einem lang laufenden Programm, das kontinuierlich in eine Logdatei schreibt - wie ist es möglich, unter Berücksichtigung aller Pufferprobleme, jeder Zeile, die mit einem Linux-Skript in diese Datei geschrieben wird, eine Datumszeichenfolge hinzuzufügen?

Ich könnte mir so etwas vorstellen:

%Vor%

Die Eingabe würde in etwa so aussehen:

%Vor%

Die Ausgabe sollte der folgenden ähneln:

%Vor%     
bmk 16.06.2011, 16:53
quelle

6 Antworten

20

Mit Perl:

%Vor%

Mit gawk:

%Vor%

Ersetzen Sie command durch tail -f logfile für Ihr spezifisches Beispiel. Oder vielleicht könnten Sie einfach das stdout / stderr des ursprünglichen Programms in die obige Pipe umleiten.

    
Steve Prentice 16.06.2011, 17:03
quelle
5

Sie können dies versuchen

%Vor%

Beispielausgabe:

%Vor%     
Felipe 26.02.2013 18:17
quelle
4

Versuchen Sie

%Vor%     
aioobe 16.06.2011 17:00
quelle
1

Ein wenig lang, aber hier ist, was ich gefunden habe:

%Vor%     
Andrew Clark 16.06.2011 17:11
quelle
0

Können Sie das lang laufende Programm so konfigurieren, dass es seine Ausgabe in die Standardausgabe und nicht in die Logdatei schreibt? In diesem Fall wäre es einfach, die Ausgabe an ein Skript zu übergeben, das zuerst den aktuellen Zeitstempel und dann den Eintrag schreibt.

Wenn das nicht möglich ist, kann es hilfreich sein, den Logfile-Inhalt regelmäßig (z. B. jede Sekunde) zu lesen, jede Zeile in eine andere Datei zu kopieren (den aktuellen Zeitstempel hinzuzufügen) und dann die Logdatei zu löschen. Dies kann jedoch zum Verlust von Logfile-Einträgen führen, die zwischen dem Lesen und Löschen der Datei geschrieben werden: (

    
BurninLeo 16.06.2011 16:59
quelle
0

Oder Sie können Python verwenden ...

cat /dev/urandom | python -c "from __future__ import print_function; import sys; import datetime; map(lambda x: print(datetime.datetime.now(), x), [line for line in sys.stdin.readlines()])"

Oder verwenden Sie den GNU-Bildschirm

%Vor%

Zuerst müssen Sie die Protokollierung und den Zeitstempel auf Ihrer ~ / .screenrc aktivieren.

%Vor%     
Jorge Niedbalski R. 26.02.2013 19:02
quelle

Tags und Links