Access Log
a szerver access log rögzíti az összes kérést a szerver által feldolgozott. A hozzáférési napló helyét és tartalmát a CustomLog
irányelv szabályozza. ALogFormat
irányelv a naplók tartalmának kiválasztásának egyszerűsítésére használható. Ez a szakasz leírja, hogyan konfigurálhatja a kiszolgálót az információk rögzítésére a hozzáférési naplóban.
természetesen az információk tárolása a hozzáférési naplóban csak a naplókezelés kezdete., A következő lépés az, hogy elemezzük ezt az információt, hogy hasznos statisztikákat készítsünk. A naplóelemzés általában túlmutat a jelen dokumentumon, és nem igazán része a webszerver feladatainak. A témával kapcsolatos további információkért, valamint a naplóelemzést végző alkalmazásokhoz ellenőrizze a nyitott könyvtárat.
az Apache httpd különböző verziói más modulokat és irányelveket használtak a hozzáférés naplózásának szabályozására, beleértve a mod_log_referer, mod_log_agent és a TransferLog
irányelvet., A CustomLog
irányelv mostantól az összes régebbi irányelv funkcionalitását tartalmazza.
a hozzáférési napló formátuma nagyon konfigurálható. A formátum egy formátum karakterlánc segítségével van megadva, amely úgy néz ki, mint egy C-style printf (1) formátumú karakterlánc. Néhány példa a következő szakaszokban található. A formátum karakterlánc lehetséges tartalmának teljes listáját lásd a mod_log_config
formátum karakterláncok.
közös Naplóformátum
a hozzáférési napló tipikus konfigurációja a következőképpen nézhet ki.,
LogFormat "%h %l %u %t \"%r\" %>s %b" commonCustomLog logs/access_log common
Ez határozza meg a common
becenevet, és egy adott log formátumú karakterlánccal társítja. A formátum karakterlánc százalékos irányelvekből áll, amelyek mindegyike azt mondja a kiszolgálónak, hogy naplózzon egy adott információt. Szó karakterek is elhelyezhető a formátum karakterlánc, majd másolja közvetlenül a log kimenet. Az idézőjelet ("
) úgy kell kikerülni, hogy előtte egy visszacsapást helyez el, hogy megakadályozza annak értelmezését a formátum karakterlánc végeként., A formátum karakterlánc tartalmazhat speciális vezérlő karaktereket is “\n
” az új sorhoz és “\t
” A laphoz.
aCustomLog
irányelv új naplófájlt hoz létre a megadott becenév használatával. A hozzáférési napló fájlneve a ServerRoot
fájlhoz viszonyítva van, kivéve, ha perjelrel kezdődik.
a fenti konfiguráció naplóbejegyzéseket ír le a Common Log Format (CLF) néven ismert formátumban. Ezt a szabványos formátumot számos különböző webszerver állíthatja elő, amelyeket számos naplóelemző program olvas., A CLF-ben előállított naplófájl-bejegyzések így néznek ki:
127.0.0.1 - frank "GET /apache_pb.gif HTTP/1.0" 200 2326
a naplóbejegyzés minden részét az alábbiakban ismertetjük.
127.0.0.1
(%h
) ez a kliens (távoli gazdagép) IP-címe, amely a kiszolgálóhoz intézte a kérést. Ha aHostnameLookups
On
értékre van állítva, akkor a kiszolgáló megpróbálja meghatározni a gazdanevet, majd az IP-cím helyett bejelentkezni. Ez a konfiguráció azonban nem ajánlott, mivel jelentősen lelassíthatja a kiszolgálót., Ehelyett a legjobb, ha egy log post-processzort használ, mint például alogresolve
a hostnevek meghatározásához. Az itt bejelentett IP-cím nem feltétlenül annak a gépnek a címe, amelyen a felhasználó ül. Ha a felhasználó és a kiszolgáló között proxykiszolgáló van, akkor ez a cím lesz a proxy címe, nem pedig az eredeti gép.-
(%l
) a kimeneten található “kötőjel” azt jelzi, hogy a kért információ nem áll rendelkezésre., Ebben az esetben a nem elérhető információ az ügyfél RFC 1413 azonosítója, amelyet aidentd
határoz meg az ügyfelek gépén. Ez az információ rendkívül megbízhatatlan, és szinte soha nem szabad használni, kivéve a szorosan ellenőrzött belső hálózatokon. Az Apache httpd csak akkor próbálja meg meghatározni ezt az információt, ha aIdentityCheck
értékeOn
.frank
(%u
) , Ugyanez az érték jellemzően aREMOTE_USER
környezeti változóban található CGI szkriptek számára is elérhető. Ha a kérés állapotkódja (lásd alább) 401, akkor ezt az értéket nem szabad megbízni, mert a felhasználó még nincs hitelesítve. Ha a dokumentum nem jelszóval védett, akkor ez a rész “-
” lesz, mint az előző.(
%t
) A kérelem beérkezésének időpontja., A formátum:
lehetséges, hogy az idő jelenik meg egy másik formátumban megadásával %{format}t
a log formátum string, ahol format
vagy mint a strftime(3)
A C standard könyvtár, vagy az egyik támogatott speciális tokeneket. A részleteket lásd a mod_log_config
formátum karakterláncok.
"GET /apache_pb.gif HTTP/1.0"
(\"%r\"
) az ügyfél kérési sorát kettős idézőjelek adják meg. A kérési sor sok hasznos információt tartalmaz., Először is, az ügyfél által használt módszerGET
. Másodszor, az ügyfél a/apache_pb.gif
erőforrást kérte, harmadszor pedig az ügyfél aHTTP/1.0
protokollt használta. Lehetőség van a kérési sor egy vagy több részének önálló naplózására is. Például a “%m %U%q %H
” formátumú karakterlánc naplózza a módszert, az elérési utat, a lekérdezési karakterláncot és a protokollt, ami pontosan ugyanazt a kimenetet eredményezi, mint a “%r
“.200
(%>s
) ez az állapotkód, amelyet a szerver küld vissza az ügyfélnek., Ez az információ nagyon értékes, mert kiderül, hogy a kérelem eredményezte, hogy egy sikeres válasz (kód elején 2) átirányítás (kód elején 3), hiba okozta az ügyfél (kódok elején 4), vagy egy hiba a szerver (kódok kezdődő 5). A lehetséges állapotkódok teljes listája megtalálható a HTTP specifikációban (RFC2616 10.szakasz).
2326
(%b
) az utolsó rész az ügyfélnek visszaküldött objektum méretét jelzi, a válaszfejlécek kivételével., Ha az ügyfél nem kapott vissza tartalmat, akkor ez az érték “-
“lesz. Ha “0
” nincs tartalom, használja a%B
helyett.
kombinált Naplóformátum
egy másik általánosan használt formátum karakterláncot kombinált Naplóformátumnak neveznek. Ezt fel lehet használni az alábbiak szerint.
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combinedCustomLog log/access_log combined
Ez a formátum pontosan megegyezik a közös Naplóformátummal, további két mező hozzáadásával. Mindegyik további mező a %{header}i
százalékos irányelvet használja, ahol a fejléc bármilyen HTTP kérés fejléc lehet., A hozzáférési napló ebben a formátumban fog kinézni:
a További mezők:
"http://www.example.com/start.html"
(\"%{Referer}i\"
) A “refererer” (sic) HTTP kérés fejléc. Ez adja a helyszínen, hogy az ügyfél jelentések már említett. (Ennek az oldalnak kell lennie, amely a/apache_pb.gif
– ra hivatkozik vagy tartalmaz)."Mozilla/4.08 (Win98; I ;Nav)"
(\"%{User-agent}i\"
) A User-Agent HTTP request fejléc. Ez az azonosító információ, amelyet az ügyfélböngésző magáról jelent.,
több hozzáférési naplók
Több hozzáférési naplók lehet létrehozni egyszerűen megadásával több CustomLog
irányelvek a konfigurációs fájlban. Például a következő irányelvek három hozzáférési naplót hoznak létre. Az első tartalmazza az alapvető CLF információkat, míg a második és a harmadik hivatkozó és böngésző információkat tartalmaz. Az utolsó kétCustomLog
sor megmutatja, hogyan lehet utánozni aReferLog
ésAgentLog
hatását.,
Ez a példa azt is mutatja, hogy nem szükséges becenevet meghatározni a LogFormat
irányelvvel. Ehelyett a naplóformátum közvetlenül megadható a CustomLog
irányelvben.
feltételes naplók
vannak esetek, amikor célszerű kizárni bizonyos bejegyzéseket a hozzáférési naplókból az ügyfélkérelem jellemzői alapján. Ez könnyen megvalósítható a környezeti változók segítségével. Először egy környezeti változót kell beállítani annak jelzésére, hogy a kérés megfelel bizonyos feltételeknek., Ez általában a SetEnvIf
értékkel érhető el. Ezután aenv=
CustomLog
irányelv záradékát használjuk a környezeti változó beállításával kapcsolatos kérelmek beillesztésére vagy kizárására. Néhány példa:
egy másik példa, fontolja meg az angol anyanyelvűek kéréseinek naplózását egy naplófájlba, a nem angol beszélőket pedig egy másik naplófájlba.
SetEnvIf Accept-Language "en" englishCustomLog logs/english_log common env=englishCustomLog logs/non_english_log common env=!english
egy gyorsítótárazási forgatókönyvben szeretnénk tudni a gyorsítótár hatékonyságáról., Egy nagyon egyszerű módszer, hogy megtudja, ez lenne:
SetEnv CACHE_MISS 1LogFormat "%h %l %u %t "%r " %>s %b %{CACHE_MISS}e" common-cacheCustomLog logs/access_log common-cache
mod_cache
fut előtt mod_env
és, ha sikeres, szállít a tartalom nélkül. Ebben az esetben a gyorsítótár-találatok naplóznak -
, míg a gyorsítótár-hiány naplózja a 1
.,
a env=
szintaxis mellett LogFormat
támogatja a HTTP válaszkódtól függő naplózási értékeket:
LogFormat "%400,501{User-agent}i" browserlogLogFormat "%!200,304,302{Referer}i" refererlog
az első példában a User-agent
jelentkezzen be, ha a HTTP állapotkód 400 vagy 501. Más esetekben a szó szerinti ” – ” lesz naplózva helyett. Hasonlóképpen, a második példában aReferer
naplózásra kerül, ha a HTTP állapotkód nem 200, 204 vagy 302. (Megjegyzés: a”!”az állapotkódok előtt.,
bár most mutattuk be, hogy a feltételes naplózás nagyon erős és rugalmas, nem ez az egyetlen módja annak, hogy ellenőrizzék a naplók tartalmát. A naplófájlok hasznosabbak, ha a szerver tevékenységének teljes nyilvántartását tartalmazzák. Gyakran könnyebb egyszerűen feldolgozni a naplófájlokat, hogy eltávolítsa azokat a kéréseket, amelyeket nem akar megfontolni.