Prozessdaten mit Listen verwalten

Daten einer Webserver-Logdatei

In einer Webserver-Logdatei werden alle Zugriffe auf Dateien, die zur Darstellung von Webseiten benötigt werden, protokolliert. Wir betrachten im Folgenden die Daten einer solchen Webserver-Logdatei (in etwas vereinfachter Form, da weitere Angaben weggelassen sind):

131.246.0.13 - - [24/Jul/2012:12:44:21 +0200] "GET /informatik/index.html HTTP/1.1" 200 512 
131.246.0.13 - - [24/Jul/2012:12:44:25 +0200] "GET /informatik/bild.png HTTP/1.1" 200 805 
# ...

In der Tabelle wird die Bedeutung der Daten kurz erläutert.

Daten Bedeutung
131.246.0.13 IP-Adresse des aufrufenden Hosts
- Benutzernamer, sofern erforderlich
- Passwort, falls erforderlich
[24/Jul/2012:12:44:21 +0200] Zeitstempel bestehend aus Datum, Uhrzeit und Zeitverschiebung
"GET /informatik/index.html HTTP/1.1" Anfrage an den Server
200 Antwort des Servers (200: erfolgreiche Anfrage)
512 Dateigröße (Anzahl der Bytes)

Wenn Daten einer Logdatei automatisiert analysiert weren sollen, dann sollten sie in einer gut verarbeitbaren Form vorliegen.

Eine naheliegende Möglichkeit wäre, die einzelnen Einträge einer Logdatei als Zeichenketten darzustellen und alle diese Zeichenketten mit einer Liste zu verwalten.

[
'131.246.0.13 - - [24/Jul/2012:12:44:21 +0200] "GET /informatik/index.html HTTP/1.1" 200 512',
'131.246.0.13 - - [24/Jul/2012:12:44:25 +0200] "GET /informatik/bild.png HTTP/1.1" 200 805'
]

Aufgabe 1

Welchen Nachteil hätte diese Darstellung der Daten mit Hilfe von Zeichenketten?

Verwaltung mit geschachtelten Listen

Wir werden im Folgenden versuchen, die Strukur der darzustellenden Daten besser zu erfassen. Vorerst betrachten wir nur den Zeitstempel eines Datensatzes.

Wie lässt sich ein Zeitstempel wie z.B. [24/Jul/2012:12:44:21 +0200] strukturgetreu darstellen? Wir benutzen hierzu zunächst geschachtelte Listen.

>>> zeitstempel = [[24, 'Jul', 2012], [12, 44, 21], ['+', 2, 0]]
>>> zeitstempel
[[24, 'Jul', 2012], [12, 44, 21], ['+', 2, 0]]
>>> zeitstempel[0]
[24, 'Jul', 2012]
>>> zeitstempel[0][1]
...
>>> zeitstempel[1]
...
>>> zeitstempel[1][0]
...
>>> zeitstempel[1][0:2]
...
>>> zeitstempel[2][1]
...

Aufgabe 2

(a) Wie würde man analog den Zeitstempel [21/Jan/2008:12:44:01 +0100] mit Listen darstellen?

(b) Im Python-Dialog oben fehlen etliche Auswertungsergebnisse (hier angedeutet durch ...). Stelle zunächst Vermutungen auf, was hier von Python als Ergebnis zurückgeliefert wird. Überprüfe anschließend deine Vermutungen.

(c) Welche Vorteile hat die Darstellung strukturierter Daten mit geschachtelten Listen?

(d) Überlege dir eine strukturierte Listendarstellung für die Daten einer Logdatei.

131.246.0.13 - - [24/Jul/2012:12:44:21 +0200] "GET /informatik/index.html HTTP/1.1" 200 512 
131.246.0.13 - - [24/Jul/2012:12:44:25 +0200] "GET /informatik/bild.png HTTP/1.1" 200 805 
# ...

Aufgabe 3

...

X

Fehler melden

X

Suche