Die Protokollfunktion von gzip_cnc
Ausgabe von Meldungen
Für jede von ihm bearbeitete Seitenanforderung schreibt gzip_cnc einen Eintrag in seiner eigenen Protokolldatei, falls einer solche bei seiner Konfiguration definiert wurde.
Am Ende der Verarbeitung einer jeden Anforderung
- öffnet gzip_cnc seine Protokolldatei zur Erweiterung am Dateiende,
- schreibt eine Zeile in die Datei und
- schließt diese Datei sofort wieder.
Das Programm unternimmt keine Anstrengungen, zwischen mehreren simultanen Schreibzugriffen zu synchronisieren.
Aufbau der Protokolldatei
Jeder Eintrag in diese Protokolldatei besteht aus Feldern in folgendem Format:
$date $status:
$sizein ->
$sizeout (
$rate%)
$cputime sec
$url
wobei die einzelnen Felder folgende Bedeutungen haben:
Feldname | Format | Bedeutung |
---|---|---|
$date | YYYY-MM-DD_hh:mm:ss |
Datum und Uhrzeit der Erzeugung dieses Protokolleintrags |
$status | Zeichenkette | Status-Code der Verarbeitung dieser Anforderung |
$sizein | ganze Zahl oder "- " |
Größe der Original-Datei (unkomprimiert) in Bytes |
$sizeout | ganze Zahl oder "- " |
Größe der Cache-Datei (komprimiert) in Bytes |
$rate | Gleitpunktzahl | Komprimierungsrate des Seiteninhalts in Prozent (oder 0 , falls die Cache-Datei nicht ausgeliefert wurde) |
$cputime | Gleitpunktzahl | bei der Verarbeitung verbrauchte CPU-Zeit in Sekunden |
$url | Zeichenkette | angeforderter URL des Dokuments |
Auswertung der Protokolldatei
gzip_cnc liefert sein eigenes Auswertungsprogramm gzip_cnc_log_eval
für dieses Protokoll-Format mit. Dieses Programm ist - genau wie gzip_cnc selbst - in Perl geschrieben.
Sein Aufruf erfolgt allerdings nicht als CGI-Skript (wegen einer möglicherweise recht langen Programmlaufzeit bei der Auswertung sehr großer Protokolldateien), sondern über die Kommandozeile:
perl gzip_cnc_log_eval
$filein $fileout
Die beiden (optionalen) Parameterwerte beschreiben die Pfadnamen
- der Eingabedatei (also der Protokolldatei von gzip_cnc) und
- der Ausgabedatei (also dem als Ergebnis dieser Auswertung erzeugten HTML-Dokument).
Wurde nur ein Parameterwert angegeben, dann wird dieser Wert für den Namen der Eingabedatei verwendet. Für fehlende Parameterwerte gelten die im Programmcode voreingestellten Defaultwerte; somit kann das Programm also im selben Verzeichnis wie die gzip_cnc-Protokolldatei abgelegt und dann ganz ohne Parameterwerte aufgerufen werden.
Genau wie bei gzip_cnc selbst kann das Verhalten von gzip_cnc_log_eval
durch die Angabe entsprechender Werte am Anfang des Programm-Quelltextes beeinflußt werden. Dabei sind folgende Eigenschaften einstellbar:
- Der Name der Eingabedatei (Defaultwert:
gzip_cnc.log
), - der Name der Ausgabedatei (Defaultwert:
gzip_cnc.html
), - der Defaultwert für den bei der Berechnung des Brutto-Transfervolumens einer Anforderung zusätzlich anzusetzenden Overheads für die HTTP- und TCP-Header von Anforderung und Antwort (Defaultwert: 1000 Bytes) und
- ein Schalter zur Entscheidung, ob nur eine summarische Auswertung oder zusätzlich auch eine Tabelle für die Komprimierungswirkung bezogen auf jeden einzelnen URL erzeugt werden soll (diese Option ist per Default abgeschaltet, weil hierbei eine enorm große Ausgabedatei entstehen kann).
Details hierzu sind im Quelltext von gzip_cnc_log_eval
ausführlich erläutert.
(Michael Schröpl, 2002-08-04)