<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.de.xsl"?>
<modulesynopsis metafile="mod_logio.xml.meta">
<name>mod_logio</name>
<description>Protokollierung der pro Anfrage übertragenen
Bytes</description>
<status>Base</status>
<sourcefile>mod_logio.c</sourcefile>
<identifier>logio_module</identifier>
<summary>
<p>Mit diesem Modul kann die Anzahl der pro Anfrage und Antwort
gesendeten und empfangenen Bytes aufgezeichnet werden. Die Werte geben
die tatsächlich über das Netzwerk übertragenen Bytes wieder
und
berücksichtigen dabei sowohl die Header
als auch den Rumpf der Anfragen und Antworten.
Die Zählung erfolgt bei Eingaben vor der SSL-/TLS-Verschlüsselung
und
bei Ausgaben nach der Entschschlüsselung, so dass der Wert alle
Änderungen
durch die Verschlüsselung korrekt wieder gibt.</p>
<p>Dieses Modul setzt das Modul <module>mod_log_config</module>
voraus.</p>
</summary>
<seealso><module>mod_log_config</module></seealso>
<seealso><a href="../logs.html">Protokolldateien</a></seealso>
<section id="formats">
<title>Angepasste Protokollformate</title>
<p>Dieses Modul führt zwei neue Protokollanweisungen ein. Die
Eigenschaften
der Anfrage selbst werden mit Hilfe von "<code>%</code>"-Anweisungen
in der Formatzeichenfolge protokolliert, die wie folgt durch Werte in der
Protokolldatei ersetzt werden:</p>
<table border="1" style="zebra">
<tr><th>Format String</th>
<th>Beschreibung</th></tr>
<tr><td><code>%...I</code></td>
<td>Empfangene Bytes einschließlich Anfrage und Header. Der Wert
kann nicht null sein.</td></tr>
<tr><td><code>%...O</code></td>
<td>Gesendete Bytes einschließlich Antwort und Header. Der Wert
kann nicht
null sein.</td></tr>
</table>
<p>Normalerweise wird das Modul wie folgt verwendet:</p>
<dl>
<dt>Kombiniertes I/O-Protokollformat:</dt>
<dd><code>"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"
\"%{User-agent}i\" %I %O"</code></dd>
</dl>
</section>
</modulesynopsis>
<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.de.xsl"?>
<modulesynopsis metafile="mod_log_config.xml.meta">
<name>mod_log_config</name>
<description>Protokollierung von Anfragen an den Server</description>
<status>Base</status>
<sourcefile>mod_log_config.c</sourcefile>
<identifier>log_config_module</identifier>
<summary>
<p>Dieses Modul bietet viele Möglichkeiten zur Protokollierung
von Client-Anfragen. Das Format der Protokollnotizen kann angepasst
und die Notiz entweder direkt in eine Datei geschrieben oder an ein externes
Programm übergeben werden. Auch eine bedingte Protokollierung ist
möglich,
so dass bestimmte Anfragen je nach ihren Eigenschaften bei der
Protokollierung berücksichtigt oder von dieser ausgeschlossen werden
können.</p>
<p>Das Modul stellt drei Direktiven bereit:
Mit <directive module="mod_log_config">TransferLog</directive> wird eine
Protokolldatei angelegt, mit
<directive module="mod_log_config">LogFormat</directive> wird das
Format angepasst und mit
<directive module="mod_log_config">CustomLog</directive> kann beides in
einem Schritt erfolgen. Die Direktiven <directive>TransferLog</directive>
und
<directive>CustomLog</directive> können mehrfach für einen Server
angegeben
werden, damit Anfragen in mehreren Dateien protokolliert werden.</p>
</summary>
<seealso><a href="../logs.html">Protokolldateien</a></seealso>
<section id="formats"><title>Angepasste Protokollformate</title>
<p>Das Formatargument für <directive module="mod_log_config"
>LogFormat</directive> und <directive module="mod_log_config"
>CustomLog</directive> ist eine Zeichenfolge. Diese Zeichenfolge wird
für die Protokollierung jeder Anfrage in der Protokolldatei verwendet.
Sie
kann Literale und Steuerzeichen im C-Stil enthalten
("\n" und "\t" für Zeilenvorschub
und Tabulator). Einzufügenden Anführungszeichen und Backslashs
muss ein Backslash vorangestellt werden.</p>
<p>Die Besonderheiten der Anfrage werden mit Hilfe von
"<code>%</code>"-Anweisungen in der Zeichenfolge angegeben, die in der
Datei durch folgende Werte ersetzt werden:</p>
<table border="1" style="zebra">
<columnspec><column width=".2"/><column width=".8"/></columnspec>
<tr><th>Formatzeichenfolge</th>
<th>Beschreibung</th></tr>
<tr><td><code>%%</code></td>
<td>Das Prozentzeichen (<em>Seit Version 2.0.44</em>)</td></tr>
<tr><td><code>%...a</code></td>
<td>Remote-IP-Adresse</td></tr>
<tr><td><code>%...A</code></td>
<td>Lokale IP-Adresse</td></tr>
<tr><td><code>%...B</code></td>
<td>Gesendete Bytes ohne HTTP-Header.</td></tr>
<tr><td><code>%...b</code></td>
<td>Gesendete Bytes ohne HTTP-Header. Im CLF-Format, <em>d.h.</em>
es steht ein '<code>-</code>'-Zeichen anstelle einer 0, wenn kein Byte
gesendet wurde.</td></tr>
<tr><td><code>%...{<var>Foobar</var>}C</code></td>
<td>Der Inhalt des Cookie <var>Foobar</var> in der an den Server
gesendeten Anfrage.</td></tr>
<tr><td><code>%...D</code></td>
<td>Die für die Beantwortung der Anfrage benötigte Zeit in
Mikrosekunden.</td></tr>
<tr><td><code>%...{<var>FOOBAR</var>}e</code></td>
<td>Der Inhalt der Umgebungsvariablen
<var>FOOBAR</var></td></tr>
<tr><td><code>%...f</code></td>
<td>Dateiname</td></tr>
<tr><td><code>%...h</code></td>
<td>Remote-Host</td></tr>
<tr><td><code>%...H</code></td>
<td>Das Anfrageprotokoll</td></tr>
<tr><td><code>%...{<var>Foobar</var>}i</code></td>
<td>Der Inhalt der <code><var>Foobar</var>:</code>-Headerzeile(n)
in der an den Server gesendeten Anfrage.</td></tr>
<tr><td><code>%...l</code></td>
<td>Der Remote-Protokollname (von einer IDENT-Anfrage, falls
angegeben)</td></tr>
<tr><td><code>%...m</code></td>
<td>Die Anfragemethode</td></tr>
<tr><td><code>%...{<var>Foobar</var>}n</code></td>
<td>Der Inhalt der Note <var>Foobar</var> von einem anderen
Modul.</td></tr>
<tr><td><code>%...{<var>Foobar</var>}o</code></td>
<td>Der Inhalt der <code><var>Foobar</var>:</code>-Header-Zeile(n)
der Antwort.</td></tr>
<tr><td><code>%...p</code></td>
<td>Der TCP-Port, an den die Antwort des Servers ausgeliefert
wurde.</td></tr>
<tr><td><code>%...P</code></td>
<td>Die Prozess-ID des Kindprozesses, der die Anfrage beantwortet
hat.</td></tr>
<tr><td><code>%...{<var>Format</var>}P</code></td>
<td>Die Prozess-ID oder Thread-ID des Kindprozesses, der die Anfrage
beantwortet hat. Zulässige Formate sind
<code>pid</code> und <code>tid</code>.
(<em>Ab Version 2.0.46</em>)
</td></tr>
<tr><td><code>%...q</code></td>
<td>Die Abfragezeichenfolge (mit vorangestelltem <code>?</code>,
wenn eine Abfragezeichenfolge vorhanden ist,
andernfalls eine leere Zeichenfolge).</td></tr>
<tr><td><code>%...r</code></td>
<td>Die erste Zeile der Anfrage.</td></tr>
<tr><td><code>%...s</code></td>
<td>HTTP-Statuscode. Wurde bei einer Anfrage eine interne Umleitung
ausgelöst, enthält <code>%s</code> den Status der
Originalanfrage.
--- <code>%...>s</code> steht dagegen für den letzten
Status.</td></tr>
<tr><td><code>%...t</code></td>
<td>Die Zeit im Common Log Format (englisches Standardformat)</td></tr>
<tr><td><code>%...{<var>Format</var>}t</code></td>
<td>Die Zeit in angegebenen <var>Format</var>. Sie entspricht dem
Format der <code>strftime(3)</code>-Funktion.
(Möglicherweise lokalisiert).</td></tr>
<tr><td><code>%...T</code></td>
<td>Die Zeit, die vom Server benötigt wurde, um die Anfrage zu
beantworten (in Sekunden).</td></tr>
<tr><td><code>%...u</code></td>
<td>Die User-ID (vom Authentifizierungsmodul; fehlgeschlagen, wenn
der Rückgabewert 401 vorliegt (<code>%s</code>) )</td></tr>
<tr><td><code>%...U</code></td>
<td>Der URL-Pfad der Anfrage
einschließlich Abfragezeichenfolge.</td></tr>
<tr><td><code>%...v</code></td>
<td>Der Name des virtuellen Servers,
der vom Client angesprochen wurde.</td></tr>
<tr><td><code>%...V</code></td>
<td>Der Servername entsprechend der <directive module="core"
>UseCanonicalName</directive>-Einstellung.</td></tr>
<tr><td><code>%...X</code></td>
<td>Der Verbindungsstatus nach Beantwortung der Anfrage:
<table>
<columnspec><column width=".2"/><column width=".6"/></columnspec>
<tr><td><code>X</code> =</td>
<td>Die Verbindung wurde abgebrochen,
bevor die Beantwortung erfolgte.</td></tr>
<tr><td><code>+</code> =</td>
<td>Die Verbindung kann sich noch im Keep-Alive-Zustand
befinden, nachdem die Antwort abgeschickt wurde.</td></tr>
<tr><td><code>-</code> = </td>
<td>Die Verbindung wird geschlossen, nachdem die Antwort
gesendet wurde.</td></tr>
</table>
<p>(Diese Direktive lautete <code>%...c</code> in späteren
Apache 1.3-Versionen, was aber im Widerspruch zur älteren
SSL-Syntax stand
<code>%...{<var>var</var>}c</code>.)</p></td></tr>
<tr><td><code>%...I</code></td>
<td>Empfangene Bytes einschließlich Anfrage und der Header. Der
Wert
kann nicht null sein. Für diese Anweisung muss
<module>mod_logio</module> aktiviert werden.</td></tr>
<tr><td><code>%...O</code></td>
<td>Gesendete Bytes einschließlich der Header. Der Wert
kann nicht null sein. Für diese Anweisung muss
<module>mod_logio</module> aktiviert werden.</td></tr>
</table>
<p>Die Formatanweisung "<var>...</var>" kann für nichts
stehen (<code>"%h %u %r %s %b"</code>) oder sie kann Bedingungen
für den Einschluss eines Elements angeben (sie wird dann durch "-"
ersetzt, wenn die Bedingung nicht zutrifft). Die Bedingungen sind eine
Liste von HTTP-Statuscodes, denen ein Ausrufezeichen mit der
Bedeutung "nicht" vorangestellt werden
kann. Die Anweisung "%400,501{User-agent}i" protokolliert nur
<code>User-agent:</code> beim Statuscode 400 und 501 (Bad Request, Not
Implemented). "%!200,304,302{Referer}i" protokolliert
<code>Referer:</code> für alle Anfragen, die <em>keinen</em> normalen
Status zurückliefern.</p>
<p>In den HTTPD-2.0-Versionen vor 2.0.46 wurden keine Sonderzeichen
in den Zeichenfolgen <code>%...r</code>, <code>%...i</code> und
<code>%...o</code> interpretiert, um den Anforderungen des
Common Log-Format gerecht zu werden. Dadurch konnten Clients
Sonderzeichen in das Protokoll schreiben, so dass beim Umgang mit
unbearbeiteten Protokolldateien Vorischt geboten war.</p>
<p>Aus Sicherheitsgründen werden seit der Version 2.0.46 den nicht
darstellbaren Zeichen und den Sonderzeichen meist
<code>\x<var>hh</var></code>-Sequenzen vorangestellt, wobei
<var>hh</var> für die hexadezimale Darstellung steht. Ausnahmen von
dieser
Regel sind <code>"</code> und <code>\</code>, denen ein Backslash
vorangestellt wird, sowie alle Leerzeichen, die in der C-Notation
geschrieben
werden (<code>\n</code>, <code>\t</code> usw.).</p>
<p>Einige gebräuchliche Formatanweisungen sind:</p>
<dl>
<dt>Common Log-Format (CLF)</dt>
<dd><code>"%h %l %u %t \"%r\" %>s %b"</code></dd>
<dt>Common Log-Format mit virtuellem Host</dt>
<dd><code>"%v %h %l %u %t \"%r\" %>s %b"</code></dd>
<dt>Kombiniertes Protokollformat</dt>
<dd><code>"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"
\"%{User-agent}i\""</code></dd>
<dt>Referer-Protokollformat</dt>
<dd><code>"%{Referer}i -> %U"</code></dd>
<dt>Browser-Protokollformat</dt>
<dd><code>"%{User-agent}i"</code></dd>
</dl>
<p>Das kanonische <directive module="core">ServerName</directive>
und <directive module="mpm_common">Listen</directive> des Servers,
der die Anfrage beantwortet, werden für <code>%v</code> beziehungsweise
<code>%p</code> verwendet. Dies geschieht unabhängig von der
<directive module="core">UseCanonicalName</directive>-Einstellung, weil
sonst Analyseprogramme den vollständigen
Vhost-Vergleichsalgorithmus duplizieren müssten, um entscheiden zu
können,
welcher Host tatsächlich eine Anfrage beantwortet hat.</p>
</section>
<section id="security"><title>Sicherheit</title>
<p>Unter <a
href="../misc/security_tips.html#serverroot">Hinweise zur Sicherheit</a>
finden Sie weitere Einzelheiten dazu, warum Sicherheitslücken entstehen
können, wenn in das Verzeichnis, in welchem die Protokolldateien
gespeichert
sind, andere Benutzer als derjenige schreiben dürfen, unter dem der
Server
gestartet wurde.</p>
</section>
<directivesynopsis>
<name>CookieLog</name>
<description>Die Datei für die Protokollierung der Cookies</description>
<syntax>CookieLog <var>Dateiname</var></syntax>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>
<compatibility>Diese Direktive ist veraltet.</compatibility>
<usage>
<p>Die <directive>CookieLog</directive>-Direktive gibt den Namen
der Datei für die Protokollierung der Cookies an. Der Dateiname wird
relativ
zu <directive module="core">ServerRoot</directive> angegeben. Diese
Direktive wurde nur für die Kompatibilität mit
<code>mod_cookies</code>
aufgenommen und ist veraltet.</p>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>CustomLog</name>
<description>Dateiname und Format der Protokolldatei</description>
<syntax>CustomLog <var>Dateiname</var>|<var>Pipe </var>
<var>Format</var>|<var>Nickname</var>
[env=[!]<var>Umgebungsvariable</var>]</syntax>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>
<usage>
<p>Die <directive>CustomLog</directive>-Direktive protokolliert
Anfragen an den Server. Die Protokollierung kann im abgebenen Format
in Abhängigkeit von Umgebungsvariablen erfolgen.</p>
<p>Das erste Argument gibt an, wohin die Protokolleinträge geschrieben
werden. Zwei Angaben sind möglich:</p>
<dl>
<dt><var>Datei</var></dt>
<dd>Ein Dateiname relativ zu <directive module="core"
>ServerRoot</directive>.</dd>
<dt><var>Pipe</var></dt>
<dd>Das Pipe-Zeichen "<code>|</code>", auf das der Pfad für das
Program folgt, welches die Protokollnotiz über seine Standardeingabe
entgegen nimmt.
<note type="warning"><title>Achtung:</title>
<p>Wird ein Programm angegeben, dann wird dieses unter dem Benutzer
ausgeführt, der den Server gestartet hat. Wurde
der Server unter <code>root</code>
gestartet, dann sollte es sich um ein sicheres Programm handeln.</p>
</note>
<note type="warning"><title>Hinweis</title>
<p>Bei der Angabe von Pfadnamen unter anderen Betriebssystemen als
Unix sollte darauf geachtet werden, dass nur das <code>/</code>-
Zeichen verwendet wird, selbst wenn das Betriebssystem einen Backslash
zulässt. Im Allgemeinen ist es sinnvoll, in den
Konfigurationsdateien
immer den normalen Schrägstrich zu verwenden.</p>
</note></dd>
</dl>
<p>Das zweite Argument gibt an, was in die Protokolldatei geschrieben
wird. Es kann entweder einen <var>Nickname</var> angeben, der mit einer
vorangegangenen
<directive module="mod_log_config">LogFormat</directive>-Anweisung
definiert wurde, oder es kann eine explizite
Formatanweisung enthalten, wie sie im
Abschnitt <a href="#formats">Protokollformate</a> beschrieben wurden.</p>
<p>Die beiden folgenden Anweisungen führen beispielsweise zum gleichen
Ergebnis:</p>
<example>
# CustomLog mit Nickname<br />
LogFormat "%h %l %u %t \"%r\" %>s %b" common<br />
CustomLog logs/access_log common<br />
<br />
# CustomLog Formatanweisung<br />
CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b"
</example>
<p>Das dritte Argument ist optional und legt fest, ob bestimmte Anfragen
in Abhängigkeit vom Vorhandensein einer Variablen in der Serverumgebung
protokolliert werden. Wurde die angegebene <a href="../env.html">
Umgebungsvariable</a> für die Anfrage nicht gesetzt (oder ist sie
infolge einer
<code>env=!<var>Name</var></code>-Klausel nicht gesetzt), dann wird die
Anfrage protokolliert.</p>
<p> Mit den Modulen <module>mod_setenvif</module>
und/oder <module>mod_rewrite</module> können Umgebungsvariablen
für einzelne Anfragen gesetzt werden. Sollen beispielsweise alle
Anfragen
nach GIF-Bildern in einer separaten Datei und nicht in eigentlichen
Serverprotokoll aufgezeichnet werden, kann dies wie folgt geschehen:</p>
<example>
SetEnvIf Request_URI \.gif$ gif-image<br />
CustomLog gif-requests.log common env=gif-image<br />
CustomLog nongif-requests.log common env=!gif-image
</example>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>LogFormat</name>
<description>Beschreibt das Format der Protokolldatei</description>
<syntax>LogFormat <var>Format</var>|<var>Nickname</var>
[<var>Nickname</var>]</syntax>
<default>LogFormat "%h %l %u %t \"%r\" %>s %b"</default>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>
<usage>
<p>Diese Direktive gibt das Format für die Einträge in einer
Protokoldatei an.</p>
<p>Für die <directive>LogFormat</directive>-Direktive gibt es zwei
Varianten. In der ersten Variante wird nur ein Argument angegeben. In diesem
Fall gibt sie das Format für Protokolle an, die mit späteren
<directive>TransferLog</directive>-Anweisungen definiert werden. Das
Argument kann ein explizites <var>Format</var> angeben, wie es im Abschnitt
<a href="#formats">Angepasste Protokollformate</a> aufgeführt wird.
Alternativ kann ein <var>Nickname</var> angegeben werden, der auf ein
zuvor mit einer <directive>LogFormat</directive>-Anweisung definiertes
Format verweist.</p>
<p>Bei der zweiten Variante verknüpft <directive>LogFormat</directive>
ein angegebenes <var>Format</var> mit einem <var>Nickname</var>. Dieser
<var>Nickname</var> kann in späteren <directive>LogFormat</directive>-
oder <directive module="mod_log_config">CustomLog</directive>-
Anweisungen benutzt werden, um eine wiederholte Eingabe der gesamten
Formatanweisung zu vermeiden. Eine <directive>LogFormat</directive>-
Direktive, die einen Nickname definiert, <strong>bewirkt weiter
nichts</strong>, das heißt, sie definiert <em>nur</em> den Nickname,
wendet
das Format aber selbst nicht an und macht es nicht zur Voreinstellung.
Daher berührt sie nachfolgende <directive module="mod_log_config">
TransferLog</directive>-Direktiven nicht. Außerdem ist zu beachten,
dass
die <directive>LogFormat</directive>-Anweisung keinen Nickname mit
einem anderen Nickname definieren kann. Der Nickname darf kein
Prozentzeichen enthalten(<code>%</code>).</p>
<example><title>Beispiel</title>
LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost_common
</example>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>TransferLog</name>
<description>Die Position der Protokolldatei</description>
<syntax>TransferLog <var>Datei</var>|<var>Pipe</var></syntax>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>
<usage>
<p>Diese Direktive übernimmt die gleichen Argumente wie die Direktive
<directive module="mod_log_config">CustomLog</directive> und
führt auch zu den gleichen Ergebnissen. Allerdings kann das
Protokollformat
nicht explizit angegeben oder eine bedingte Protokollierung
durchgeführt
werden. Das Format wird vielmehr von der zuletzt angegebenen
<directive module="mod_log_config">LogFormat</directive>-Direktive
festgelegt, die keinen Nickname definiert hat. Wird kein Format angegeben,
wird das Common Log-Format benutzt.</p>
<example><title>Beispiel</title>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"
\"%{User-agent}i\""<br />
TransferLog logs/access_log
</example>
</usage>
</directivesynopsis>
</modulesynopsis>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]