logs.pl: Log-Dateien auswerten


Übersicht

logs.pl --help | --version

logs.pl [ --verbose ... | --no_verbose ]
[ --timestamp TIMESTAMP ] [ --srcdir SRCDIR ]
[ --datadir DATADIR ] [ --openin OPENIN ] [ --newlogs NEWLOGS ] [ --logsflt LOGSFLT ]
[ --openout OPENOUT ] [ --finished FINISHED ] [ --detailed DETAILED ]
[ --timeout TIMEOUT ] [ --own OWN ]
[ --storyidflt STORYIDFLT ] [ --imageflt IMAGEFLT ] [ --langflt LANGFLT ]
[ --exclua EXCLUA ] | [ --ownmark OWNMARK ]... [ --docroot DOCROOT ] [ --storyflt STORYFLT ]

Optionen

--help

Gibt eine kurze Hilfe aus

--version

Gibt kurze Hinweise zum Programm und die Version aus.

--verbose

Erhöht den Umfang der Meldungen nach STDERR.

--no_verbose

Unterdrückt die Ausgabe von Meldungen. Die Optionen --verbose und --no_verbose werden der Reihe nach ausgewertet.

--timestamp TIMESTAMP

TIMESTAMP wird für den Platzhalter ${timestamp} in den Werten NEWLOGS, OPENIN, OPENOUT, FINISHED und DETAILED eingesetzt.

--srcdir SRCDIR

Im Verzeichnis SRCDIR wirden die Datei visits_in.xslt erwartet. Diese Transformation gibt die Daten der offenen Besuche aus der Datei OPENIN in dem unten beschriebenen zeilenorientierten Textformat aus.

--datadir DATADIR

DATADIR wird für den Platzhalter ${datadir} in den Werten OPENIN, NEWLOGS, OPENOUT, FINISHED und DETAILED eingesetzt.

--openin OPENIN

OPENIN ist die Datei mit den Daten der offenen Besuche. Sie wird vor den Log-Dateien gelesen. Die Transformation visits_in.xslt gibt die Daten der offenen Besuche im unten beschriebenen Textformat an dieses Programm.

--newlogs NEWLOGS

Im Verzeichnis NEWLOGS liegen die Access-Log-Dateien, die ausgewertet werden, nachdem die Daten der offenen Besuche (OPENIN) gelesen worden sind. Die Log-Dateien sind gzip-komprimiert und enhalten die Daten im „Combined Log Format” oder einer Erweiterung dieses Formats. NEWLOGS kann die Platzhalter ${timestamp} und ${datadir} enthalten.

--logsflt LOGSFLT

Nur Dateien im Verzeichnis NEWLOGS, deren Name dem regulären Ausdruck LOGSFLT entspricht, werden als Access-Log-Dateien ausgewertet.

--openout OPENOUT

OPENOUT ist die XML-Ausgabedatei der Besuche, die nach der Auswertung der letzten Access-Log-Datei offen sind. OPENOUT nutzt wie die anderen XML-Ausgabedateien den Namensraum http://herbaer.de/xmlns/20170605/visits/ (s. visits.rng). OPENOUT kann die Platzhalter ${timestamp} und ${datadir} enthalten.

--finished FINISHED

FINISHED ist die XML-Ausgabedatei mit zusammengefassten Daten der abgeschlossenen Besuche (Zahlen der Besuche aufgeschlüsselt nach Bilder, Bildgeschichten und Sprachen). FINISHED kann die Platzhalter ${timestamp} und ${datadir} enthalten.

--detailed DETAILED

DETAILED ist die XML-Ausgabedatei mit den Details der abgeschlossenen Besuche. DETAILED kann die Platzhalter ${timestamp} und ${datadir} enthalten.

--timeout TIMEOUT

Ein Besuch gilt als abgeschlossen, wenn TIMEOUT Sekunden lang kein Zugriff von der IP-Adresse mit der passenden Browser-Kennung erfolgt ist.

--own OWN

Der reguläre Ausdruck OWN kennzeichnet die („geheimen”) URL-Pfade, die belegen, dass ich selbst der Besucher bin.

--storyidflt STORYIDFLT

Wenn ein angefragter URL-Pfad dem regulären Ausdruck STORYIDFLT entrspricht, zählt eine Bildergeschichte als besucht (vorausgesetzt, der Besuch gilt als „echter” Besuch). Die erste Gruppe des regulären Ausdrucks Eliefert die Kennung der besuchten Bildergeschichte.

--imageflt IMAGEFLT

Ein angefragter URL-Pfad, der dem regulären Ausdruck IMAGEFLT entspricht, bedeutet, dass ein Bild angefragt worden ist. Die erste Gruppe liefert die Kennung der Bildergeschichte, zu der das Bild gehört, die zweite Gruppe den Dateinamen des Bildes ohne Suffix.

--langflt LANGFLT

Ein angefragter URL-Pfad, der dem regulären Ausdruck LANGFLT entspricht, bedeutet, dass eine bestimmt Sprache angefragt worden ist. Die erste Gruppe liefert die Kennung der Sprache.

--exclua EXCLUA

Ein Besuch durch einen „user agent”, der dem regulären Ausdruck EXCLUA entspricht, zählt nicht. Ich will so Besuche durch Suchmaschinen und Automaten („Bots”) ausschließen.

--ownmark OWNMARK

Die Zeichenkette OWNMARK im User-Agent-String kennzeichnet eigene Besuche (Selbstbesuche). Möglicherweise ist diese Markierung bei Unter-Requests nicht im User-Agent-String enthalten. Deshalb wird OWNMARK aus dem User-Agent-String entfernt und der Zugriff normal ausgewertet. Der Besuch wird aber als „Selbstbesuch” gekennzeichnet.

--docroot DOCROOT

In der Aufschlüsselung der Besuche nach Bildergeschichten sollen auch die Bildergeschichten erscheinen, die noch gar nicht besucht sind. Um diese Bildergeschichten zu finden, wird das Webserver-Dokumenten-Verzeichnis DOCROOT durchsucht.

--storyflt STORYFLT

Der reguläre Ausdruck STORYFLT beschreibt die Unterverzeichnisse von DOCROOT, die eine Bildergeschichte enthalten. Die erste Gruppe liefert die Kennung der Bildergeschichte.

Das Format der Eingabe der offenen Besuche

Die Transformation visits_in.xslt gibt die Daten der offenen Besuche (s. visits.rng) in einem zeilenorientierten Textformat an dieses Programm. Die Daten eines Besuchs werden im folgenden Format übergeben:

IP (Adresse)
AGENT (Browser)
FIRST (Zeit)
LAST (Zeit)
TRFIN  (Zahl)
TRFOUT (Zahl)
REQTIME (Zahl)
FILE (Dateipfad) (Anzahl)
...
STORY (StoryID) (Anzahl)
...
IMAGE (StoryID)/(BildID) (Anzahl)
...
LANG (Sprachkennung)
...
OWNSITE (Anzahl)

Jede IP-Zeile leitet die Daten eines neuen Besuchs ein. Die Zeilen IP, AGENT, FIRST und LAST sind für jeden Besuch erforderlich, alle anderen Zeilen sind optional. Jede Zeile, der eine Zeile "..." folgt, kann beliebig oft vorkommen. Die Reihenfolge der Zeilen nach der IP-Zeile ist beliebig.

Beschreibung

Dieses Programm liest die Daten der offenen Besuche (OPENIN) und wertet Access-Log-Dateien (NEWLOGS) aus. Es erstellt die drei XML-Dateien OPENOUT, FINISHED und DETAILED.

Software-Voraussetzungen

Das Programm ist mit Perl Version 5.10.1 entwickelt. Es benutzt die folgenden Module:

File::Spec::Functions

Hier wird die Funktion catfile benutzt.

IO::Uncompress::Gunzip

Dient zum Lesen der gzip-komprimierten Access-Log-Dateien.

HTTP::Date

Die Funktion str2time interpretiert die Zeitdaten.

Herbaer::Readargs

Die Funktion read_args aus diesem Modul verarbeitet die Befehlszeilenargumente, die Funktion print_message_with_values gibt die Hilfe mit den aktuellen Einstellungen aus.

Herbaer::Replace

Die Funktion replace aus diesem Modul ersetzt die Platzhalter in den Datei- und Verzeichnisnamen in der Befehlszeile.

Herbaer::XMLDataWriter

Ausgabe der Hash-Daten im XML-Format.