Wie kann ich Informationen zu Cookies protokollieren?

14

Ich möchte meinen Apache-Zugriffsprotokollen Cookie-Informationen hinzufügen, z. B.: E-Mail, Benutzername (das Cookie wird von einer PHP-Datei erstellt, nicht von Apache).

Kann ich der log.confDatei etwas hinzufügen, das dem ähnelt: \"%{cookieName}i\"to

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

Wenn das nicht funktioniert, verwende ich das Cookie-Protokoll und kombiniere es mit dem Zugriffsprotokoll und wie?

Der Hochstapler
quelle

Antworten:

22

Es gibt drei Möglichkeiten, Cookies in Apache-Protokolle zu übertragen:

%{cookiename}C
Dies stimmt mit dem benannten Cookie überein, das in der Anfrage vom Browser gesendet wurde, jedoch nicht mit anderen Cookies.

%{Cookie}i
Dadurch wird der gesamte Cookie: -Header protokolliert, der in der Anforderung an den Server gesendet wurde. Dies kann sehr umfangreich sein, wenn viele Cookies gesetzt sind oder wenn eines der Cookies viele Daten enthält.

%{Set-Cookie}o
Dies entspricht dem gesamten Set-Cookie: -Header, der vom Server in der Antwort gesendet wurde.

Beachten Sie, dass "Cookiename" durch den Namen des Cookies ersetzt werden sollte, das Sie protokollieren möchten, während die beiden anderen Methoden genau wie geschrieben in Ihre CustomLog-Direktive eingefügt werden sollten. Diese beiden sind übereinstimmende Header in der Anforderung bzw. der Antwort. Sie können verwendet werden, um mit jedem Header übereinzustimmen, nicht nur mit den Cookie-Headern.

Ladadadada
quelle
7

Versuchen Sie dies in Ihrer vhost-Konfiguration:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{Cookie}i\"" with_cookies
CustomLog /var/log/apache2/my-access.log with_cookies

arbeitete für mich; Ausgabe in my-access.log:

83.0.11.22 - - [02/Aug/2009:12:31:30 +0200] "GET /ct/ HTTP/1.1" 200 - "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1" "c1=1; c2=2; PHPSESSID=6c4513f22852a235b8988da822f89d04"
pQd
quelle