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
]
--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.
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.
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
.
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.