Logfile auslesen nach Keywords und Ausgabe mit nächster Zeile ausgeben
Hallo Zusammen,
ich möchte Logfiles monitoren.
Normal nutze ich dafür PRTG mit dem Sensor -- Datei-Inhalt --.
Dort kann ich nach bestimmten Wörtern suchen und dem Sensor entsprechende Eigenschaften geben was er dann tun soll.
Oft wird es je nach Aufbau des Logfiles etwas tricky und dann macht ein Powershell script mehr Sinn.
Aktuell habe ich den Fall das ich ein Logfile nach einem bestimmten Fehler auslesen möchte und wenn er auftritt er mir den Fehler und zusätzlich die nächste Zeile dazu ausgeben soll. Beispielsweise in einer csv die dann per sendmail an eine status adresse gesendet wird.
Am Ende bekomme ich halt so mit das bei einem Kunden oder Lieferanten die Adresse in den Stammdaten falsch hinterlegt ist ohne dafür extra manuell in das Logfile zu schauen.
Beispiel:
Zeile 1: Fehlercode aus der Software: Fehler beim SMTP Versand
Zeile 2: weitere Beschreibung: *sendmailstmp error: could not be send to mailadress@server.xy
Bin über jede Hilfe dankbar!
Ungefähr so:
Get-ChildItem -Path C:\logfiles -Include "access.log" -Recurse | Select-String -Pattern "Fehler beim SMTP Versand" (Fehlt halt noch die nächste Zeile und das umlenken in eine csv)
ich möchte Logfiles monitoren.
Normal nutze ich dafür PRTG mit dem Sensor -- Datei-Inhalt --.
Dort kann ich nach bestimmten Wörtern suchen und dem Sensor entsprechende Eigenschaften geben was er dann tun soll.
Oft wird es je nach Aufbau des Logfiles etwas tricky und dann macht ein Powershell script mehr Sinn.
Aktuell habe ich den Fall das ich ein Logfile nach einem bestimmten Fehler auslesen möchte und wenn er auftritt er mir den Fehler und zusätzlich die nächste Zeile dazu ausgeben soll. Beispielsweise in einer csv die dann per sendmail an eine status adresse gesendet wird.
Am Ende bekomme ich halt so mit das bei einem Kunden oder Lieferanten die Adresse in den Stammdaten falsch hinterlegt ist ohne dafür extra manuell in das Logfile zu schauen.
Beispiel:
Zeile 1: Fehlercode aus der Software: Fehler beim SMTP Versand
Zeile 2: weitere Beschreibung: *sendmailstmp error: could not be send to mailadress@server.xy
Bin über jede Hilfe dankbar!
Ungefähr so:
Get-ChildItem -Path C:\logfiles -Include "access.log" -Recurse | Select-String -Pattern "Fehler beim SMTP Versand" (Fehlt halt noch die nächste Zeile und das umlenken in eine csv)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1969229851
Url: https://administrator.de/contentid/1969229851
Ausgedruckt am: 22.11.2024 um 01:11 Uhr
5 Kommentare
Neuester Kommentar
Get-ChildItem -Path C:\logfiles -Include "access.log" -Recurse -File | select-string -Pattern 'Fehler beim SMTP Versand' -SimpleMatch -Context 1 | select Path,@{n='ErrorLine';e={$_.Line}},@{n='NextLine';e={$_.Context.PostContext}} | export-csv .\ergebnis.csv -delimiter ";" -NoTypeInformation -Encoding UTF8
Zitat von @askando:
Er nimmt nur die erste Mailadresse die er im Log findet und zeigt dann alle fehlgeschlagenen Versuche an.
Hier wird keine Mail-Adresse gesucht sondern die oben von dir gepostete Fehlermeldung und für jede Zeile in der diese Steht wird dessen benachbarte nächste Zeile mit ausgegeben.Er nimmt nur die erste Mailadresse die er im Log findet und zeigt dann alle fehlgeschlagenen Versuche an.
Genau das müsste er halt noch für alle weiteren Mailadressen machen die unten im Logfile stehen.
??wie oben beschrieben die Fehlermeldung ist immer die selbe, Unterschiede sind dann immer nur in der zweiten Zeile.
Klar und die wird ja mit ausgegeben ...verstehe nicht was du sonst willst, das Skript macht genau das was du oben in der Ursprungsfrage gefragt hast ... Wir kennen den Aufbau deiner Logfiles ja nicht.Get-ChildItem -Path C:\logfiles -Include "access.log" -Recurse -File | %{
select-string -Path $_.Fullname -Pattern 'Fehler beim SMTP Versand' -SimpleMatch -Context 1 | select Path,@{n='ErrorLine';e={$_.Line}},@{n='NextLine';e={$_.Context.PostContext}} | group Nextline | %{$_.Group}
} | export-csv .\ergebnis.csv -delimiter ";" -NoTypeInformation -Encoding UTF8