LogFormat

V souboru httpd.conf se dá nastavit několik pojmenovaných logovacích formátů. Příklady:

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

To poslední je jméno. 

Zápis do souboru se zadá takto:

CustomLog logs/access.log dusan

(některé zdroje uvádějí TransferLog),

cesta souboru se odvozuje od ServerRoot. V souboru se pro každý přístup vytvoří řádek, který bude obsahovat údaje o přístupu. Které údaje to budou, nastavují ta písmenka v masce, neboli formát logu. 

Použitelné formáty

Do logovací masky se dají psát normální znaky, escapované znaky (nejčastěji uvozovky \") a speciální klíčové znaky uvozené procenty

%b
Počet odeslaných bajtů
%{proměnná}e
Hodnota proměnné prostředí proměnná
%f
Jméno odesílaného souboru
%h
Vzdálený hostitel
%{hlavička}i
Obsah záhlaví jménem hlavička z klientského http požadavku, např. Referer nebo User-Agent
%{Referer}i
Soubor, který obsahoval odkaz, na který bylo "kliknuto"
%{User-Agent}i
Identifikace prohlížeče (obecně klienta). Posílá se takový ten děsně dlouhý řetězec "Mozilla..."
%l
Jméno vzdáleného záznamu (od procesu identd, pokud je dodáno) ?-)
%{hlavička}o
Obsah záhlaví jménem hlavička ze serverové http odpovědi
%P
Identifikátor PID podřízené instance Apache zpracovávající požadavek
%p
Port serveru
%r 
První řádek požadavku. Obvykle se dává mezi \" uvozovky \", protože není zaručen přesný počet interních mezer; odlišnosti by pak znesnadnily analýzu.
%s
Stavová informace: u interně přesměrovaných požadavků se uvádí stav původního požadavku.
%>s
Totéž pro poslední požadavek (zajímavější položka než %s)
%t
Čas v obecném formátu, to znamená např. [20/Dec/2001:14:37:36 +0100]
%U 
Požadované URL
%u
Vzdálený uživatel; info od modulu auth
%v
Virtuální hostitel serveru

Příklad

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

se zaznamenal takto:

127.0.0.1 - - [20/Jan/2001:16:47:57 -0800] "GET / HTTP/1.1" 200 1396
127.0.0.1 - - [20/Jan/2001:16:47:57 -0800] "GET /apache_pb.gif HTTP/1.1" 200 2326
127.0.0.1 - - [20/Jan/2001:16:49:17 -0800] "GET / HTTP/1.1" 200 1396
127.0.0.1 - - [20/Jan/2001:16:49:17 -0800] "GET /apache_pb.gif HTTP/1.1" 304 -

127.0.0.1 je IP klienta (v tomto případě lokál), odpovídá klíči %h

%l a %u (identifikátor a jméno uživatele) nebyly dostupné, takže se zaznamenaly znakem -

čas se zaznamenal v obecném formátu. -0800 znamená časové pásmo Mountain time (např. Utah

\"%r\" je v uvozovkách uzavřený první řádek požadavku. Je velmi zajímavý, protože obsahuje dost podstatného: "metoda požadovaný_soubor verze_HTTP_protokolu". Např. GET je metoda požadavku, "/" je adresa kořene dokumentů a HTTP/1.1 je verze HTTP.

Podmínky

Pomocí klíčů se nastavuje složení zaznamenaných údajů = složení sloupců. Dá sa ale nastavit i omezení jen na některé požadavky = řádkový filtr. Prostě se některé přístupy nebudou zaznamenávat.

Jediné snadné omezení je podle HTTP kódu odpovědi. Když mě budou zajímat pouze úspěšně vyřízené požadavky (kód 200), napíšu před libovolný klíč prostě 200, např.: "%200U" Dá se to negovat vykřičníkem, logické spojení OR více hodnot se dělá čárkou.

Syntaxe záznamových podmínek by měla být %[podmínka]klíč. Neodhalil jsem však zatím syntaxe podmínek.