logbestanden

Access Log

De server access log registreert alle verzoeken die door de server worden verwerkt. De locatie en inhoud van het toegangslog worden gecontroleerd door de CustomLog richtlijn. De LogFormat richtlijn kan worden gebruikt om de selectie van de inhoud van de logs te vereenvoudigen. In deze sectie wordt beschreven hoe u de server configureert om informatie op te slaan in het toegangslogboek.

natuurlijk is het opslaan van de informatie in het toegangslog slechts het begin van logbeheer., De volgende stap is om deze informatie te analyseren om nuttige statistieken te produceren. Loganalyse valt over het algemeen buiten het bereik van dit document en maakt niet echt deel uit van de taak van de webserver zelf. Raadpleeg de map openen voor meer informatie over dit onderwerp en voor toepassingen die loganalyses uitvoeren.

verschillende versies van Apache httpd hebben andere modules en richtlijnen gebruikt om toegangslogging te beheren, waaronder mod_log_referer, mod_log_agent, en de TransferLog directive., De CustomLog richtlijn vervangt nu de functionaliteit van alle oudere richtlijnen.

het formaat van de access log is zeer configureerbaar. Het formaat wordt gespecificeerd met behulp van een format string die veel lijkt op een C-stijl printf(1) format string. In de volgende paragrafen worden enkele voorbeelden gegeven. Voor een volledige lijst van de mogelijke inhoud van de format string, zie de mod_log_config format strings.

Common Log Format

een typische configuratie voor de access log kan er als volgt uitzien.,

LogFormat "%h %l %u %t \"%r\" %>s %b" commonCustomLog logs/access_log common

dit definieert de bijnaam common en associeert het met een bepaalde log format string. De format string bestaat uit procent richtlijnen, die elk de server vertellen om een bepaald stukje informatie te loggen. Letterlijke tekens kunnen ook in de format string worden geplaatst en zullen direct worden gekopieerd naar de log-uitvoer. Het aanhalingsteken (") moet worden weggelaten door er een backslash voor te plaatsen om te voorkomen dat het wordt geïnterpreteerd als het einde van de format string., De format string kan ook de speciale controle tekens “\n” voor new-line en “\t” voor tab bevatten.

de CustomLog richtlijn stelt een nieuw logbestand op met behulp van de gedefinieerde schermnaam. De bestandsnaam voor de access log is relatief aan de ServerRoot tenzij het begint met een slash.

de bovenstaande configuratie zal logboekvermeldingen schrijven in een formaat dat bekend staat als het Common Log Format (CLF). Dit standaardformaat kan door veel verschillende webservers worden geproduceerd en door veel loganalyseprogramma ‘ s worden gelezen., De log file entries geproduceerd in CLF zullen er ongeveer zo uitzien:

127.0.0.1 - frank "GET /apache_pb.gif HTTP/1.0" 200 2326

elk deel van deze log entry wordt hieronder beschreven.

127.0.0.1(%h) dit is het IP-adres van de client (remote host) die het verzoek aan de server heeft gedaan. AlsHostnameLookupsis ingesteld opOn, dan zal de server proberen de hostnaam te bepalen en deze in te loggen in plaats van het IP-adres. Deze configuratie wordt echter niet aanbevolen omdat het de server aanzienlijk kan vertragen., In plaats daarvan is het het beste om een log post-processor te gebruiken zoalslogresolveom de hostnamen te bepalen. Het hier gerapporteerde IP-adres is niet noodzakelijk het adres van de machine waarop de gebruiker zit. Als er een proxyserver bestaat tussen de gebruiker en de server, zal dit adres het adres van de proxy zijn, in plaats van de oorspronkelijke machine.-(%l) het” koppelteken ” in de uitvoer geeft aan dat het gevraagde stukje informatie niet beschikbaar is., In dit geval is de informatie die niet beschikbaar is de RFC 1413-identiteit van de client bepaald dooridentdop de clients-machine. Deze informatie is zeer onbetrouwbaar en mag bijna nooit worden gebruikt, behalve op streng gecontroleerde interne netwerken. Apache httpd zal niet eens proberen deze informatie te bepalen tenzijIdentityCheckis ingesteld opOn.frank(%u) dit is de gebruikersnaam van de persoon die het document aanvraagt, zoals bepaald door HTTP-authenticatie., Dezelfde waarde wordt doorgaans geleverd aan CGI-scripts in deREMOTE_USERomgevingsvariabele. Als de statuscode voor de aanvraag (zie hieronder) 401 is, moet deze waarde niet worden vertrouwd omdat de gebruiker nog niet is geverifieerd. Als het document niet beveiligd is met een wachtwoord, zal dit deel “-” zijn, net als het vorige.(%t) het tijdstip waarop het verzoek werd ontvangen., Het formaat is:

het is mogelijk om de tijd in een ander formaat te laten weergeven door %{format}t in de log format string op te geven, waarbij format is zoals in strftime(3) uit de C standaardbibliotheek, of een van de ondersteunde speciale tokens. Voor details zie demod_log_config format strings.

"GET /apache_pb.gif HTTP/1.0"(\"%r\") de aanvraagregel van de client wordt gegeven tussen dubbele aanhalingstekens. De request line bevat veel nuttige informatie., Ten eerste is de methode die door de client wordt gebruiktGET. Ten tweede vroeg de client de bron/apache_pb.gif, en ten derde gebruikte de client het protocolHTTP/1.0. Het is ook mogelijk om een of meer delen van de aanvraagregel zelfstandig te loggen. Bijvoorbeeld, de format string “

%m %U%q %H“zal de methode, het pad, de query-string en het protocol loggen, wat resulteert in exact dezelfde uitvoer als”%r“.200(%>s) Dit is de statuscode die de server terugstuurt naar de client., Deze informatie is zeer waardevol, omdat het onthult of het verzoek resulteerde in een succesvolle reactie (codes beginnen in 2), Een omleiding (codes beginnen in 3), Een fout veroorzaakt door de client (codes beginnen in 4), of een fout in de server (codes beginnen in 5). De volledige lijst van mogelijke statuscodes is te vinden in de HTTP-specificatie (rfc2616 sectie 10).2326(%b) het laatste deel geeft de grootte aan van het object dat naar de client is geretourneerd, zonder de response headers., Als er geen content naar de client werd geretourneerd, zal deze waarde “-“zijn. Om “0” voor geen inhoud te loggen, gebruik%Bin plaats daarvan.

gecombineerd Logformaat

een andere veelgebruikte formaatreeks wordt het gecombineerde Logformaat genoemd. Het kan als volgt worden gebruikt.

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combinedCustomLog log/access_log combined

Dit formaat is precies hetzelfde als het gemeenschappelijke Log-formaat, met de toevoeging van twee velden. Elk van de extra velden gebruikt de procent-directive %{header}i, waarbij header elke HTTP request header kan zijn., De toegangslog in dit formaat ziet er als volgt uit:

de extra velden zijn:

"http://www.example.com/start.html"(\"%{Referer}i\") De “Referer” (SIC) HTTP request header. Dit geeft de site die de klant meldt te zijn doorverwezen van. (Dit moet de pagina zijn die linkt naar of/apache_pb.gifbevat)."Mozilla/4.08 (Win98; I ;Nav)"(\"%{User-agent}i\") de HTTP-requestheader voor gebruikersagent. Dit is de identificerende informatie die de client browser rapporteert over zichzelf.,

meerdere toegangslogboeken

meerdere toegangslogboeken kunnen eenvoudig worden aangemaakt door meerdere CustomLog richtlijnen in het configuratiebestand op te geven. De volgende richtlijnen zullen bijvoorbeeld drie toegangslogboeken aanmaken. De eerste bevat de basis CLF-informatie, terwijl de tweede en derde verwijzer-en browserinformatie bevatten. De laatste twee CustomLog regels laten zien hoe de effecten van de ReferLog en AgentLog richtlijnen na te bootsen.,

dit voorbeeld laat ook zien dat het niet nodig is om een bijnaam te definiëren met de LogFormat richtlijn. In plaats daarvan kan het logformaat direct worden gespecificeerd in deCustomLog richtlijn.

conditionele Logs

Er zijn momenten waarop het handig is om bepaalde items uit de toegangslogboeken uit te sluiten op basis van de kenmerken van de clientaanvraag. Dit is gemakkelijk te bereiken met behulp van omgevingsvariabelen. Ten eerste moet een omgevingsvariabele worden ingesteld om aan te geven dat het verzoek aan bepaalde voorwaarden voldoet., Dit wordt meestal bereikt met SetEnvIf. Vervolgens wordt deenv= clausule van deCustomLog richtlijn gebruikt om aanvragen op te nemen of uit te sluiten waar de omgevingsvariabele is ingesteld. Enkele voorbeelden:

als een ander voorbeeld, overweeg logboekaanvragen van Engelssprekenden naar één logbestand, en niet-Engelssprekenden naar een ander logbestand.

SetEnvIf Accept-Language "en" englishCustomLog logs/english_log common env=englishCustomLog logs/non_english_log common env=!english

In een caching scenario zou men willen weten over de efficiëntie van de cache., Een zeer eenvoudige methode om dit uit te vinden zou zijn:

SetEnv CACHE_MISS 1LogFormat "%h %l %u %t "%r " %>s %b %{CACHE_MISS}e" common-cacheCustomLog logs/access_log common-cache

mod_cache zal voor mod_env draaien en, indien succesvol, de inhoud zonder leveren. In dat geval zal een cache hit - loggen, terwijl een cache miss 1loggen.,

naast de env= syntaxis, LogFormat ondersteunt logging waarden afhankelijk van de HTTP response code:

LogFormat "%400,501{User-agent}i" browserlogLogFormat "%!200,304,302{Referer}i" refererlog

in het eerste voorbeeld wordt de User-agent gelogd als de HTTP-status code is 400 of 501. In andere gevallen wordt in plaats daarvan een letterlijke “-” gelogd. In het tweede voorbeeld wordt de Referer gelogd als de HTTP-statuscode niet 200, 204 of 302 is. (Let op de”!”voor de statuscodes.,

hoewel we zojuist hebben aangetoond dat conditionele logging zeer krachtig en flexibel is, is het niet de enige manier om de inhoud van de logs te controleren. Logbestanden zijn nuttiger als ze een volledig record van serveractiviteit bevatten. Het is vaak gemakkelijker om de logbestanden gewoon na te verwerken om verzoeken te verwijderen die u niet wilt overwegen.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *