64903

Logfile-Filterung per Batch

Hallo!

Ich habe mal wieder ein recht kniffeliges Problem....

In einem Logfile "Fehler.log" steht unter anderem folgendes:
2010-04-14 06:43:19,569 ERROR [ .... TEXT ... ] ... TEXT ...

Solche ERROR-Zeilen möchte ich nun herausfiltern (in eine "Auswertung.log" schreiben).
Das Suchen soll mit findstr durchgeführt werden.

Da die Batch als Dienst laufen soll, dürfen nur Zeilen herausgefiltert werden, die nicht
bereits im "Auswertung.log" vorhanden sind.

Bin dankbar für jeden Tipp!
Gruß
Olli
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 140629

Url: https://administrator.de/forum/logfile-filterung-per-batch-140629.html

Ausgedruckt am: 29.04.2025 um 12:04 Uhr

77559
77559 14.04.2010 um 14:36:11 Uhr
Goto Top
Hallo Olli,

wie wärs hiermit - ungetestet:
Findstr /I "ERROR" <Fehler.log | Findstr /V /G:Auswertung.log >>Auswertung.log  

Gruß
LotPings
64903
64903 14.04.2010 um 15:20:03 Uhr
Goto Top
Findstr /I "ERROR" <Fehler.log | Findstr /V /G:Auswertung.log >>Auswertung.log  

Hi LotPings,
findstr /C:"ERROR [" Fehler.log >> Auswertung.log  
funktioniert! Es werden nur ERROR-Zeilen in die "Auswertung.log" geschrieben.

Das mit dem Suchen im "Auswertung.log" funktioniert so aber nicht.
| Findstr /V /G:Auswertung.log
Wonach wird denn hier gesucht?
77559
77559 14.04.2010 um 15:56:14 Uhr
Goto Top
Die vorher gefundenen Zeilen sollten dadurch mit der vorhandenen Auswertung.log abgegelichen werden und nur nicht schon vorhandene an die Auswertung.log angehängt werden. Das funktioniert aber leider so auch nicht ohne zwischengeschaltete Temporäre Datei.

Wie gesagt das war aus dem Handgelenk und ungetestet.

Dies sollte funktionieren:
Findstr /I "ERROR" <Fehler.log | Findstr /V /G:Auswertung.log >Temp.log  
Type Temp.log >>Auswertung.log

Gruß
LotPings
64903
64903 14.04.2010 um 16:27:47 Uhr
Goto Top
Mit der zwischengeschalteten temporären Datei klappt's.
Danke!

Doch leider gibt es doch noch ein Problem:
Die Zeilen sind teilweise knapp über 300 Zeichen lang und es kommt folgende Meldung: "FINDSTR: Suchzeichenfolge zu lang."

Zum Vergleichen würden die ersten 23 Zeichen ausreichen - aus dem Beispiel von oben also: 2010-04-14 06:43:19,569

Gruß
Olli
77559
77559 14.04.2010 um 17:00:37 Uhr
Goto Top
Hallo Olli,

wenn die Restriktionen der vorhandenen Tools den Einsatz verbieten, bist du mit einer Batch-Lösung und die auch noch als Dienst am Ende der Fahnenstange.

Ohne jetzt dein genaues Umfld zu kennen würde ich LogParser oder eine anderes auf die Bearbeitung von LogFiles spezialisiertes Tool vorschlagen.

gruß
LogParser
64903
64903 14.04.2010 um 17:52:14 Uhr
Goto Top
Hmmm.... ich hab zwar noch keine Idee wie, aber das muss doch machbar sein.
Gibt FINDSTR denn immer ganze Zeilen zurück?
Ansonsten könnte man ja in einem "Vergleich.log" nur das 23 Zeichen-Datumsformat abspeichern.

Das soll jedenfalls unbedingt als Batch laufen. Und eine läuffähige Endlos-Loop-Batch als Dienst einzurichten ist ja kein Problem.

Ist folgendes nicht machbar?
1) Fehler.log "YYYY-MM-DD HH:MM:SS,XXX ERROR [ .... TEXT ... ] ... TEXT ..."
2) Vergleich.log "YYYY-MM-DD HH:MM:SS,XXX"
3) Auswertung.log "YYYY-MM-DD HH:MM:SS,XXX ERROR [ .... TEXT ... ] ... TEXT ..."

Wenn "YYYY-MM-DD HH:MM:SS,XXX" aus Fehler.log bereits in Vergleich.log vorhanden mache nichts,
ansonsten schreibe "YYYY-MM-DD HH:MM:SS,XXX ERROR [ .... TEXT ... ] ... TEXT ..." in Auswertung.log

Gruß
Olli
77559
77559 15.04.2010 um 01:08:51 Uhr
Goto Top
Zitat von @64903:
Hmmm.... ich hab zwar noch keine Idee wie, aber das muss doch machbar sein.
Gibt FINDSTR denn immer ganze Zeilen zurück?
Per Definition, JA.
AFAIK lässt sich die Restriktion der Zeilenlänge auch nicht umgehen.

Irgendwie entzieht sich mir auch der Sinn des Ganzen.
Solange niemand die erzeugte Datei beachtet ist das doch nur unnötige Energieverschwendung.

Gruß
LotPings