Apache permette di scrivere nei propri log di accesso una serie di informazioni relative ad ogni richiesta fatta via HTTP.
Con la direttiva LogFormat si assegna un nickname al log e si decide il formato dei dati che deve contenere.
La sintassi di base si riferisce al log di default, utilizzato dalla direttiva TransferLog:
LogFormat formato
E' comunque possibile definire un nickname associato al formato impostato, che può essere utilizzato con la direttiva CustomLog:
LogFormat formato nickname
I dati che possono essere scritti nel log sono vari e vengono identificati con lettere o stringhe precedute dal simbolo %:
%b - Le dimensioni in byte del file trasferito (coincide con l'header Content-Lenght)
%f - Il nome del file e il path completo del documento richiesto
%h - L'hostname o, se non viene risolto, l'indirizzo IP del client
%a - L'indirizzo IP del client. E' uguale a %h se l'hostname non viene risolto
%A - L'indirizzo IP del server.
%l - Il nome dell'utente remoto, se fornito da un identd lookup (Poco utile e inaffidabile)
%p - La porta TCP del server, a cui è arrivata la richiesta del client (di solito 80)
%P - Il PID del child di Apache che ha gestito la richiesta
%r - La prima righa della richiesta HTTP,che contiene il metodo usato (GET, POST...)
%s - Lo status code HTTP della risposta
%t - Date e ora della richiesta. Customizzabile con %{formato}t
%T - Il numero di secondi impiegati da Apache per processare la richiesta
%u - Il nome dell'utente eventualmente autenticato sul server
%U - L'URL richiesta dal client. Contenuta anche in %r
%v - Il canonical server name, come definito nella direttiva ServerName
%V - Il server name secondo quanto definito in UseCanonicalName
%{Variabile}e - Una variabile d'ambiente, così come definita dal server
%{Header}i - Un header http nella richiesta del client (esempi comuni: %{User-Agent}i %{Referer}i )
%{Header}o - Un header http nella risposta del server (es: %{Last-Modified}o )
%{Nota}n - Una stringa che può essere scambiata fra il core di Apache e un modulo (esempio tipico, per il mod_usertrack: %{Cookie}n )
Un esempio tipico di log custom è incluso nella configurazione standard di Apache:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
che genera un log simile:
217.148.96.21 - - [07/Nov/2002:14:27:05 +0100] "GET /gfx/morecoresisproject.jpg HTTP/1.1" 304 - "http://www.openskills.info/" "Opera/6.02 (Linux 2.4.17-GANDALF i686; U) [en]"
Una variazione sul tema, che cerca di raccogliere il maggior numero di informazioni sui visitatori (ma di fatto difficilmente fornisce più informazioni di un combined log) può essere:
LogFormat "%h %t \"%r\" %l %u \"%{Referer}i\" \"%{User-Agent}i\" \"%{From}i\"" user
Configurazione, analisi e gestione dei log di un server Web. Software di analisi dei log.