Logfile erstellen

T

Thomy

Jungspund
Hallo Leute


Ich hab mir ein recht großes Shell-Skript gbastelt, dass von verschiedenen Helferprogrammen (SED, AWK...). Ich will die Fehlerausgabe (auf Kanal 2) in einer Logdatei einfangen, aber mit vorangestelltem Datum. Wie mache ich das am Besten, weil


awk -F: '{......}' file 2>> $LOGFILE

geht zwar aber halt ohne Datum. Kann ich das auch irgendwie in eine Variable schreiben, und vorne dran das Datum anhängen und diese dann ins Logfile schreiben (wenn ja wie?)??


Gruß Thomy
 
Nicht hundertprotzentig elegant, aber es funktoniert:
Code:
awk -F: '{......}' file 2 | sed "s/^/$(date): /" >> $LOGFILE
Datum formatieren wie gewünscht, siehe 'man date'...
Gruss
d22
 
Wohl eher so, oder?
Code:
awk -F: '{......}' file 2>&1 | sed "s/^/$(date): /" >> $LOGFILE

Wenn man aber nur an stderr interessiert ist, stdout aber nicht ins Nirvana (/dev/null) schicken will (weil mans eventuell noch irgendwie braucht), hilft das hier vielleicht:
Code:
exec 3>&1; awk '{...}'  2>&1 1>&3 3>&- | sed "s/^/$(date): /" 1>&2 3>&- >> LOGFILE
Habi ich aus csh: why not?:
1d. More Elaborate Combinations

Maybe you want to pipe stderr to a command and leave stdout alone.
Not too hard an idea, right? You can't do this in the csh as I
mentioned in 1a. In a Bourne shell, you can do things like this:

exec 3>&1; grep yyy xxx 2>&1 1>&3 3>&- | sed s/file/foobar/ 1>&2 3>&-
grep: xxx: No such foobar or directory
Mit "3>&-" wird einfach nur der FD 3 geschlossen.
Wobei 100%tig versteh ich das nicht. Will das vielleicht mal Jemand in Detail erklären? stdout ist immernoch auf der ursprünglichen Adresse von stdout (FD 3 zeigt ja auf &1), aber irgendwie auch nicht, hm.
 
Wobei 100%tig versteh ich das nicht. Will das vielleicht mal Jemand in Detail erklären? stdout ist immernoch auf der ursprünglichen Adresse von stdout (FD 3 zeigt ja auf &1), aber irgendwie auch nicht, hm.
Der Trick ist ganz einfach:
STDOUT geht nach 3 und das wird geschlossen.
Damit wird einfach STDOUT unterdrückt, und STDER bleibt übrig.
Etwas verwirrend aber eine Möglichkeit.
Ich kenne die csh nicht richtig, habe im Moment auch wenig Lust da nachzuleden. Aber ich denke, dass es auch reichen würde, STDERR irgendwo in's Nirvana zu schicken, um STDER rauszufiltern.

Gruß Wolfgang
 

Ähnliche Themen

Log Skript

CSV Datei mit sed manipulieren/optimieren/ergänzen

Shell if-Abfrage mit equal or greater wirft Fehlermeldung unary operator expected

Problem mit HSPA+ Modem Huawei E353 - Installation unmöglich?

Variableninhalt wird nicht gespeichert

Zurück
Oben