andreas.al
Goto Top

Serverlog mi Hilfe der Powershell auswerten

Hallo zusammen,
mit der Powershell kenne ich mich bisher nur bedingt aus..

Folgendes Problem: Ich habe eine Logdatei, die ich gerne Ausgewertet haben möchte.

Die Statistik soll in etwa so aussehen:
Datum | Name | Aufrufe
07.05.2018 | EE | 68
07.05.2018 | EEV | 99
07.05.2018 | BIP | 73
08.05.2018 | EE | 61 usw.

Logdatei-Auszug:
2018-04-30 07:53:43 10.102.4.84 GET /EE/doku.php [...Rest uninteressant]
2018-04-30 07:53:43 10.102.4.84 GET /EEV/lib/exe/indexer.php [...Rest uninteressant]

Kann man das so einfach in der Powershell realisieren?

Wenn ja, würde ich mich riesig über einen Schnipsel freuen! face-smile

Content-Key: 373265

Url: https://administrator.de/contentid/373265

Printed on: April 18, 2024 at 21:04 o'clock

Mitglied: 136037
Solution 136037 May 07, 2018 updated at 11:55:21 (UTC)
Goto Top
Bidö
$log = 'C:\datei.log'  
[regex]::Matches((gc $log -raw),'(?ism)^([\d\-]+).*?/([^/]+)').Captures | group {"$($_.Groups[1].Value) $($_.Groups[2].Value)"} | %{[pscustomobject]@{Datum=(get-date $_.Group.Groups[1].Value).ToShortDateString();Name=$_.Group.Groups[2].Value;Aufrufe=$_.Count}}  
Member: Andreas.AL
Andreas.AL May 07, 2018 at 12:40:13 (UTC)
Goto Top
Also, ich bin echt begeistert von so viel Kompetenz!
Vielen Dank!
Member: Andreas.AL
Andreas.AL Jul 04, 2018 at 12:46:15 (UTC)
Goto Top
Kriegst du noch folgende Erweiterung/Verbesserung hin?

In dem Logdatei-Auszug gibt es verschiedene Zeitstempel (im Beispiel 07:53:43 und 07:55:21 ).
So kann es vorkommen, dass es mehrere gleiche Zeitstempel gibt, die aber nur einmal gezählt werden sollen.

Beispiel Logdatei-Auszug:

2018-04-30 07:53:43 10.102.4.84 GET /EE/doku.php [...Rest uninteressant]
2018-04-30 07:53:43 10.102.4.84 GET /EE/doku.php [...Rest uninteressant]
2018-04-30 07:53:43 10.102.4.84 GET /EE/doku.php [...Rest uninteressant]
2018-04-30 07:55:21 10.102.4.84 GET /EEV/lib/exe/indexer.php [...Rest uninteressant]
2018-04-30 07:55:21 10.102.4.84 GET /EEV/lib/exe/indexer.php [...Rest uninteressant]

So wird im Moment zu EE "3" ausgegeben, zu EEV "2".
Da es ja eigentlich nur 2 Aufrufe sind, müsste ausgegeben werden: EE 1 und EEV 1

Zur Lösung habe ich mir überlegt, die Zeitstempel zu vergleichen und doppelte zu ignorieren
(WENN nächster Zeitstempel == aktueller Zeitstempel DANN gehe zum nächsten Zeitstempel)

Kriege das mit RegEx aber nicht hin.. face-sad