15

I would like to add cookie information to my Apache access logs ie: email, username (the cookie is created by php file, not Apache).

Can I add something to log.conf file similar to: \"%{cookieName}i\" to

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

If that doesn't work, do I use cookie log and combine it with access log and how?

0

2 Answers 2

26

There are three ways to get cookies into Apache logs:

%{cookiename}C
This will match the named cookie sent in the request by the browser but not any other cookies.

%{Cookie}i
This will log the entire Cookie: header sent to the server in the request. This can be quite extensive if many cookies are set or if any of the cookies have a lot of data.

%{Set-Cookie}o
This will match the entire Set-Cookie: header sent by the server in the response.

Note that "cookiename" should be replaced with the name of the cookie you want to log whereas the other two methods should be placed in your CustomLog directive exactly as written. These two are matching headers in the request and the response respectively. They can be used to match any header, not just the cookie headers.

1
  • This doesn't work. Apache version 2.4.6 Oct 22, 2020 at 14:10
10

try this in your vhost configuration:

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

worked for me ; output 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"
2
  • 1
    super it worked for me. You can add exact cookie name as LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{cookieName}C\"" with_cookies
    – Sunil Bhoi
    Mar 5, 2020 at 10:45
  • This doesn't work either. Apache version 2.4.6 Oct 22, 2020 at 14:10

You must log in to answer this question.