Access Log
palvelimen pääsy loki kirjaa kaikki pyynnöt käsitellään palvelimen. Sijainti ja sisältö pääsy loki ohjataan CustomLog
direktiivi. LogFormat
– direktiivillä voidaan yksinkertaistaa lokien sisällön valintaa. Tässä osassa kuvataan, miten palvelin voidaan määrittää tallentamaan tietoja käyttöoikeuslokiin.
tietojen tallentaminen liityntälokiin on tietysti vasta lokinhallinnan alku., Seuraava askel on analysoida nämä tiedot tuottaa hyödyllisiä tilastoja. Lokianalyysi ei yleensä kuulu tämän asiakirjan soveltamisalaan, eikä se oikeastaan kuulu itse WWW-palvelimen tehtäviin. Lisätietoja tästä aiheesta ja lokianalyysin suorittavista sovelluksista on avoimessa hakemistossa.
Eri versioita Apache httpd on käyttää muiden moduulien ja direktiivien access control-puunkorjuu, mukaan lukien mod_log_referer, mod_log_agent, ja TransferLog
direktiivi., CustomLog
– direktiivi on nyt osa kaikkien vanhempien direktiivien toimivuutta.
käyttöoikeuslokin muoto on erittäin konfiguroitavissa. Formaatti on määritelty käyttämällä formaattijonoa, joka näyttää paljon C-tyyliseltä printf(1) – formaattijonolta. Seuraavassa osassa esitetään joitakin esimerkkejä. Täydellinen luettelo mahdollisista sisältö format string, katso mod_log_config
muodossa jouset.
yleinen Lokiformaatti
kulkulokille tyypillinen kokoonpano saattaa näyttää seuraavanlaiselta.,
LogFormat "%h %l %u %t \"%r\" %>s %b" commonCustomLog logs/access_log common
Tämä määrittelee lempinimi common
ja liittää sen tiettyyn log format-merkkijono. Muotoile merkkijono koostuu prosenttia direktiivejä, joista jokainen kertoa palvelimelle kirjautua erityisesti pala tietoa. Kirjaimelliset merkit voidaan myös sijoittaa formaattijonoon ja ne kopioidaan suoraan log-ulostuloon. Lainaus merkki ("
) on karannut asettamalla kenoviiva ennen sitä, jotta se tulkitaan loppuun muotomerkkijonoa., Muotoile merkkijono voi sisältää myös erityinen ohjaus merkkiä ”\n
” new-line ja ”\t
” tab.
CustomLog
direktiivillä perustetaan uusi lokitiedosto käyttäen määritelty lempinimi. Tiedostonimi pääsy loki on suhteessa ServerRoot
ellei se alkaa kauttaviivalla.
yllä oleva kokoonpano kirjoittaa lokimerkinnät muodossa, joka tunnetaan nimellä Common Log Format (CLF). Tämän vakiomuodon voivat tuottaa monet eri web-palvelimet ja lukea monet log-analyysiohjelmat., Log-merkinnät tuotettu CLF näyttää tältä:
127.0.0.1 - frank "GET /apache_pb.gif HTTP/1.0" 200 2326
Jokainen osa tämän lokin merkintä on kuvattu alla.
127.0.0.1
(%h
) Tämä on IP-osoite client (remote host), joka teki pyynnön palvelimelle. Jos
HostnameLookups
on asetettuOn
, niin palvelin yrittää määrittää isäntänimi ja kirjaudu sen sijasta IP-osoite. Tätä määritystä ei kuitenkaan suositella, koska se voi hidastaa palvelinta merkittävästi., Sen sijaan, se on parasta käyttää kirjaudu post-prosessori, kutenlogresolve
määrittää isäntänimiä. Tässä ilmoitettu IP-osoite ei välttämättä ole sen koneen osoite, jossa käyttäjä istuu. Jos välityspalvelin on olemassa käyttäjän ja palvelimen välillä, tämä osoite on välityspalvelimen osoite eikä alkuperäkone.-
(%l
), Että ”tavuviiva” lähtö osoittaa, että pyydetty tieto ei ole saatavilla., Tässä tapauksessa tietoja ei ole käytettävissä on RFC 1413 identiteetin asiakkaan määräytyyidentd
clients-kone. Nämä tiedot ovat erittäin epäluotettavia, eikä niitä pitäisi juuri koskaan käyttää paitsi tiukasti valvotuissa sisäisissä verkoissa. Apache httpd ei edes yritä selvittää nämä tiedot, jolleiIdentityCheck
on asetettuOn
.frank
(%u
) Tämä on käyttäjätunnus pyytävän henkilön asiakirjan määräytyy HTTP-todennusta varten., Sama arvo annetaan tyypillisesti CGI-skripteilleREMOTE_USER
ympäristömuuttujassa. Jos pyynnön tilakoodi (KS. alla) on 401, tähän arvoon ei pidä luottaa, koska käyttäjää ei ole vielä varmennettu. Jos asiakirja ei ole suojattu salasanalla, tämä osa on ”-
”, aivan kuten edellinen.(
%t
), kun pyyntö on vastaanotettu., Muoto on:
on mahdollista saada ajan näkyviin toisessa muodossa määrittämällä %{format}t
log format-merkkijono, jossa format
joko kuten strftime(3)
C standard library, tai yksi tuetuista erityistä kuponkia. Lisätietoja mod_log_config
muodossa jouset.
"GET /apache_pb.gif HTTP/1.0"
(\"%r\"
) pyyntö linjan asiakas on antanut lainausmerkkeihin. Pyyntölinja sisältää paljon hyödyllistä tietoa., Ensinnäkin asiakkaan käyttämä menetelmä onGET
. Toinen asiakas pyysi resource/apache_pb.gif
, ja kolmanneksi, asiakas käyttää pöytäkirjaHTTP/1.0
. Pyyntölinjan yksi tai useampi osa on myös mahdollista kirjata itsenäisesti. Esimerkiksi format string ”%m %U%q %H
” kirjaudu menetelmä, polku, kysely-string, ja pöytäkirja, jolloin täsmälleen sama tuotos kuin ”%r
”.200
(%>s
) Tämä on tila koodi, että palvelin lähettää takaisin asiakkaalle., Tämä tieto on erittäin arvokas, koska se paljastaa, onko pyyntö johti onnistunut hoitovaste (koodit alkaen 2), uudelleenohjaus (koodit alkaen 3), virhe aiheutti asiakkaan (koodit alussa 4), tai on virhe server (koodit alussa vuonna 5). Täydellinen luettelo mahdollisista tilakoodeista löytyy HTTP-spesifikaatiosta (rfc2616 Jakso 10).
2326
(%b
) viimeinen osa ilmaisee objektin kokoa palautetaan asiakkaalle, ei mukaan lukien vastaus otsikot., Jos sisältöä ei palautettu asiakkaalle, arvo on ”-
”. Jos haluat kirjautua”0
”ilman sisältöä, käytä sen sijaan.
yhdistettyä Lokiformaattia
toista yleisesti käytettyä formaattijonoa kutsutaan yhdistetyksi Lokiformaatiksi. Sitä voidaan käyttää seuraavasti.
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combinedCustomLog log/access_log combined
Tämä muoto on täsmälleen sama kuin Yhteinen Loki Muodossa, johon on lisätty kaksi enemmän kenttiä. Jokainen lisää kenttiä käyttää prosentti-direktiivi %{header}i
, jossa otsikko voi olla mikä tahansa HTTP-pyynnön ylätunnisteen., Pääsy loki alla tämä muoto näyttää:
lisää kenttiä ovat:
"http://www.example.com/start.html"
(\"%{Referer}i\"
), Että ”Referer” (sic) HTTP-pyynnön ylätunnisteen. Tämä antaa sivuston, että asiakas raportoi on viitattu. (Tämä on sivu, joka linkittää tai sisältää/apache_pb.gif
)."Mozilla/4.08 (Win98; I ;Nav)"
(\"%{User-agent}i\"
) User-Agent-HTTP-pyynnön ylätunnisteen. Tämä on tunnistetieto, jonka asiakasselain raportoi itsestään.,
Multiple Access Lokit
Multiple access lokit voidaan luoda yksinkertaisesti määrittämällä useita CustomLog
direktiivien asetustiedostoon. Esimerkiksi seuraavissa direktiiveissä luodaan kolme liityntälokia. Ensimmäinen sisältää CLF: n perustiedot, kun taas toinen ja kolmas sisältävät refer-ja selaininformaatiota. Kaksi viimeistä CustomLog
viivat osoittavat, miten matkivat vaikutukset ReferLog
ja AgentLog
direktiivejä.,
Tämä esimerkki osoittaa myös, ettei nimimerkkiä tarvitse määritellä LogFormat
– direktiivillä. Sen sijaan lokiformaatti voidaan määritellä suoraan CustomLog
– direktiivissä.
Ehdollinen Lokit
On aikoja, jolloin se on kätevä sulkea tiettyjä merkintöjä lokit perustuu ominaisuuksiin asiakkaan pyynnöstä. Tämä onnistuu helposti ympäristömuuttujien avulla. Ensinnäkin on asetettava ympäristömuuttuja, joka osoittaa, että pyyntö täyttää tietyt ehdot., Tämä tapahtuu yleensä SetEnvIf
. Sitten env=
lauseke CustomLog
direktiivi on tapana sisällyttää tai jättää pois pyyntöjä, jossa ympäristömuuttuja on asetettu. Joitakin esimerkkejä:
toisena esimerkkinä harkita hakkuut pyyntöjä englanti-kaiuttimet yhteen lokitiedostoon, ja ei-englanti kaiuttimet eri lokitiedostoon.
SetEnvIf Accept-Language "en" englishCustomLog logs/english_log common env=englishCustomLog logs/non_english_log common env=!english
välimuistin skenaario yksi haluaisi tietää tehokkuutta.välimuisti., Hyvin yksinkertainen tapa löytää tämä ulos olisi:
SetEnv CACHE_MISS 1LogFormat "%h %l %u %t "%r " %>s %b %{CACHE_MISS}e" common-cacheCustomLog logs/access_log common-cache
mod_cache
ajaa ennen mod_env
ja kun onnistuu, tulee toimittaa sisältöä ilman sitä. Tällöin välimuistin osuma kirjaa -
, kun välimuistin kirjautuu 1
.,
lisäksi env=
– syntaksilla, LogFormat
tukee hakkuut arvot ehtona HTTP-vastaus-koodi:
LogFormat "%400,501{User-agent}i" browserlogLogFormat "%!200,304,302{Referer}i" refererlog
ensimmäisellä esimerkiksi User-agent
kirjataan, jos HTTP-tilakoodi on 400 tai 501. Muissa tapauksissa kirjaimellinen ” – ”kirjataan sen sijaan. Samoin toinen esimerkki: Referer
kirjataan, jos HTTP-tilakoodi ei ole 200, 204, tai 302. (Huomaa”!”ennen tilakoodeja.,
Vaikka olemme juuri osoittaneet, että ehdollinen hakkuut on erittäin tehokas ja joustava, se ei ole ainoa tapa hallita sisältöä lokit. Lokitiedostot ovat hyödyllisempiä, kun ne sisältävät täydellisen tallennuksen palvelimen toiminnasta. Lokitiedostojen jälkikäsittely on usein helpompaa poistaa pyyntöjä, joita et halua ottaa huomioon.