Was ist das Standard-Apache2-Protokollformat und wo ist ein solches Standardformat definiert?

7

Ich überprüfe (ein schnelles Lesen) das Apache-Modul mod_log_config und kann nicht herausfinden, welches Apache2- Standardprotokollformat ist und wo es definiert ist. Irgendeine Idee?

Beachten Sie, dass was läuft

/etc/apache2/conf.d/other-vhosts-access-log

ist keine Standardoption, sondern eine globale Option.


quelle

Antworten:

5

In der Dokumentation zur TransferLog- Anweisung ist klar angegeben :

Diese Direktive hat genau die gleichen Argumente und Auswirkungen wie die CustomLog-Direktive, mit der Ausnahme, dass das Protokollformat nicht explizit oder für die bedingte Protokollierung von Anforderungen angegeben werden kann. Stattdessen wird das Protokollformat durch die zuletzt angegebene LogFormat-Direktive bestimmt, die keinen Kurznamen definiert. Das allgemeine Protokollformat wird verwendet, wenn kein anderes Format angegeben wurde.

Fahren Sie mit der LogFormat- Anweisung fort:

Standard: LogFormat "% h% l% u% t"% r "%> s% b"

Wenn also eine TransferLogAnweisung ohne LogFormatAnweisung gegeben wird, ist das Ausgabeformat wie oben beschrieben.

Wenn auch die TransferLogAnweisung fehlt, wird kein Zugriffsprotokoll geschrieben.

H.-Dirk Schmitt
quelle
Vielen Dank, aber ich kann immer noch nichts über die TransferLog-Standardeinstellung lesen. Ich meine, wenn kein CustomLog angegeben ist, ist die TransferLog-Direktive zuständig, auch wenn sie nicht angegeben ist? Wenn das der Fall ist, wo lesen Sie das? cos TransferLog hat keinen Standardabschnitt definiert. Danke noch einmal.
Wenn kein TransferLog definiert ist, wird es nicht geschrieben.
H.-Dirk Schmitt
5

Für Ubuntu 16.04 finden Sie die globale Konfigurationsdatei hier:

/etc/apache2/apache2.conf

Darin werden einige LogFormatRichtlinien definiert .

LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

Die sofort einsatzbereite Konfigurationsdatei für den virtuellen Host finden Sie hier:

/etc/apache2/sites-available/000-default.conf

Und in dir wirst du feststellen, dass es erklärt:

CustomLog ${APACHE_LOG_DIR}/access.log combined

Der combinedAlias ​​bezieht sich auf den zweiten LogFormatin der oben genannten globalen Konfiguration:

"%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\""
Jeff Puckett
quelle
2

Standard LogFormat ist in der Tat wirklich

Default: LogFormat "%h %l %u %t \"%r\" %>s %b"

Aber das Protokollformat, das Apache standardmäßig verwendet (zumindest in der Debian-Distribution), ist:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
Dalibor Filus
quelle
1
Dies hat sich für Ubuntu 16.04 von %b "Größe der Antwort in Bytes, ausgenommen HTTP-Header. Im CLF-Format, dh ein '-' anstelle einer 0, wenn keine Bytes gesendet werden." bis jetzt %O "Gesendete Bytes, einschließlich Header. Kann in seltenen Fällen Null sein, z. B. wenn eine Anforderung abgebrochen wird, bevor eine Antwort gesendet wird. Sie müssen mod_logio aktivieren, um dies zu verwenden."
Jeff Puckett