Ist es möglich, ein benutzerdefiniertes Fehlerprotokoll in Apache 2.2 zu erstellen?

11

Ich möchte den vhost-Namen in meinem ErrorLog voranstellen und ihn dann in ein von mir geschriebenes Programm einfügen.

Ist es möglich, ein benutzerdefiniertes Fehlerprotokollformat wie beim Zugriffsprotokoll zu schreiben?

JohnT
quelle
Abhängig von Ihrem Setup können Sie für jeden Ihrer virtuellen Hosts ein Fehlerprotokoll erstellen. Es ist nicht dasselbe wie eine einheitliche analysierbare Protokolldatei, aber es ist etwas.
Muffinista

Antworten:

7

Informationen zu Rohrleitungen finden Sie in der ErrorLog- Direktive und in den offiziellen Handbucheinträgen zu Piped Logs, die dies recht gut erklären.

Das Abrufen eines benutzerdefinierten Fehlerprotokollformats ist schwieriger. Sie können das Zugriffsprotokoll problemlos anpassen LogFormat, es ist jedoch nichts zum Ändern des Fehlerprotokollformats integriert. Ich bin auf CGI :: Carp gestoßen , ein Perl-Modul zur Ausgabe in das Fehlerprotokoll. Schließlich wird der Apache-Quellcode immer direkt geändert, je nachdem, wie sehr Sie diese Funktion benötigen.

uesp
quelle
6

Mit Apache 2.4 können Sie die ErrorLogFormatDirektive verwenden.

Syntax: ErrorLogFormat [connection|request] format

Einfaches Beispiel

ErrorLogFormat "[%t] [%l] [pid %P] %F: %E: [client %a] %M"

Beispiel (Standardformat für MPMs mit Thread)

ErrorLogFormat "[%{u}t] [%-m:%l] [pid %P:tid %T] %7F: %E: [client\ %a] %M% ,\ referer\ %{Referer}i"

Beispiel (ähnlich dem 2.2.x-Format)

ErrorLogFormat "[%t] [%l] %7F: %E: [client\ %a] %M% ,\ referer\ %{Referer}i"

Erweitertes Beispiel mit Anforderungs- / Verbindungsprotokoll-IDs

ErrorLogFormat "[%{uc}t] [%-m:%-l] [R:%L] [C:%{C}L] %7F: %E: %M"
ErrorLogFormat request "[%{uc}t] [R:%L] Request %k on C:%{c}L pid:%P tid:%T"
ErrorLogFormat request "[%{uc}t] [R:%L] UA:'%+{User-Agent}i'"
ErrorLogFormat request "[%{uc}t] [R:%L] Referer:'%+{Referer}i'"
ErrorLogFormat connection "[%{uc}t] [C:%{c}L] local\ %a remote\ %A"

Quelle: ErrorLogFormat-Direktive

Null
quelle
Kann jemand erraten, warum %aleer auftauchen würde? Es soll die Client-IP-Adresse sein. Ich habe eine Frage dazu gestellt .
Bob Stein
1

Sie suchen wahrscheinlich nach mod_log_debug .

Piotr Kieszczyński
quelle
Während Sie richtig liegen, ist es vorzuziehen, die wesentlichen Teile der Antwort hier in den Link aufzunehmen, falls der Link nicht mehr funktioniert oder verschoben wird.
HopelessN00b