loggfiler

Logg på

server-logg registrerer alle henvendelser behandles av serveren. Plassering og innhold av access-loggen er kontrollert av CustomLog direktiv. LogFormat direktivet kan brukes til å forenkle valg av innholdet i loggene. Denne delen beskriver hvordan du konfigurerer serveren til å registrere opplysninger i logg.

selvfølgelig, lagring informasjonen i logg er bare starten av loggen ledelse., Neste trinn er å analysere denne informasjonen til å produsere nyttig statistikk. Logg analyse generelt er utenfor omfanget av dette dokumentet, og ikke egentlig en del av jobben til web-serveren selv. For mer informasjon om dette emnet, og for programmer som utfører logger analyse, sjekk Open Directory.

Ulike versjoner av Apache httpd har brukt andre moduler og direktiver for å kontrollere tilgang logging, inkludert mod_log_referer, mod_log_agent, og TransferLog direktiv., CustomLog direktivet nå subsumes funksjonalitet av alle eldre direktiver.

format logg er svært konfigurerbar. Formatet er spesifisert med bruk av en-format streng som ser mye som en C-stil printf(1) format string. Noen eksempler er presentert i de neste avsnittene. For en fullstendig liste over mulige innholdet av format string, se mod_log_config format strenger.

Vanlige Log-Format

En typisk konfigurasjon for tilgang til loggen kan se ut som følger.,

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

Dette definerer kallenavn common og assosierer den med en bestemt logg format string. Formatet strengen består av prosent direktiver, som hver fortelle serveren for å logge en bestemt opplysning. Bokstavelig tegn kan også være plassert i formatstrengen og vil bli kopiert direkte inn logg utdata. Sitatet karakter (") må beskyttes ved å plassere en omvendt skråstrek for å forhindre at den blir tolket som på slutten av formatstrengen., Format string kan også inneholde spesielle kontrolltegn «\n» for ny-linje, og «\t» for kategorien.

CustomLog direktivet setter opp en ny logg-fil ved hjelp av det definerte kallenavn. Filnavnet for tilgang logge er i forhold til ServerRoot med mindre det begynner med en skråstrek.

over konfigurasjonen vil skrive oppføringer i et format som er kjent som Common Log-Format (CLF). Denne standard format kan bli produsert av mange ulike web-servere og lest av mange logger analyse programmer., Log-file oppføringer produsert i CLF vil se ut noe som dette:

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

Hver del av denne oppføringen er beskrevet nedenfor.

127.0.0.1(%h) Dette er IP-adressen til klienten (remote host) som gjorde forespørsel til serveren. HvisHostnameLookupser satt tilOn, og serveren vil prøve å finne ut vertsnavn og logger det i stedet for IP-adressen. Imidlertid, denne konfigurasjonen er ikke anbefalt siden det kan betydelig redusere server., I stedet, det er best å bruke en logg post-prosessor somlogresolvefor å bestemme vertsnavn. IP-adressen som presenteres her, er ikke nødvendigvis adressen til maskinen som brukeren sitter. Hvis en proxy-server eksisterer mellom brukeren og serveren, denne adressen vil være adressen til proxy, snarere enn den opprinnelige maskinen.-(%l) Den «bindestrek» i utdataene viser at den forespurte del av informasjonen er ikke tilgjengelig., I dette tilfellet, den informasjon som ikke er tilgjengelig er RFC 1413 identiteten til klienten bestemt avidentdpå klientens maskin. Denne informasjonen er svært upålitelige, og bør nesten aldri brukes, bortsett fra på godt kontrollert interne nettverk. Apache httpd vil ikke engang forsøke å finne ut av denne informasjonen med mindreIdentityChecker satt tilOn.frank(%u) Dette er bruker-id-en til personen som ber om dokumentet som bestemmes av HTTP-godkjenning., Den samme verdien er vanligvis gitt til CGI-skript iREMOTE_USERmiljø-variabelen. Hvis status-koden for forespørsel (se nedenfor) er 401, så er denne verdien bør ikke være klarert fordi brukeren er ennå ikke godkjent. Hvis dokumentet ikke er passordbeskyttet, denne delen vil være «-» akkurat som den forrige.(%t) tid at forespørselen ble mottatt., Formatet er:

Det er mulig å ha den tiden som vises i et annet format ved å angi %{format}t logg i logg-format string, der format er enten i strftime(3) fra C standard bibliotek, eller en av de støttede spesielle symboler. For mer informasjon, se mod_log_config format strenger.

"GET /apache_pb.gif HTTP/1.0"(\"%r\") anmodning linje fra klienten er gitt i doble anførselstegn. Forespørselen linje inneholder en god del nyttig informasjon., Først, er den metoden som brukes av klientenGET. For det andre, klienten forespurte ressursen/apache_pb.gif, og for det tredje, – postklienten som blir brukt protokollenHTTP/1.0. Det er også mulig å logge ett eller flere deler av forespørselen linje uavhengig. For eksempel, format string «%m %U%q %H» vil logge metode, vei, query-streng, og protokollen, noe som resulterer i nøyaktig samme effekt som «%r«.200(%>s) Dette er status kode som tjeneren sender tilbake til klienten., Denne informasjonen er svært verdifullt, fordi det avslører om forespørselen resulterte i en vellykket respons (koder som begynner i 2), en omdirigering (koder som begynner i 3), en feil forårsaket av klienten (koder i begynnelsen 4), eller en feil i serveren (koder som begynner i 5). Full liste over mulige status koder kan bli funnet på HTTP-spesifikasjonen (RFC2616 § 10).

2326(%b) Den siste delen angir størrelsen på objektet returnert til klienten, ikke inkludert respons overskrifter., Hvis ingen innhold ble returnert til klienten, vil denne verdien være «-«. For å logge deg «0» for noe innhold, bruk%Bi stedet.

Kombinert Log-Format

en Annen vanlig brukt format string kalles Kombinert Log-Format. Det kan brukes som følger.

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

Dette formatet er nøyaktig den samme som den Vanlige Log-Format, med tillegg av to felt. Hver av de andre feltene bruker prosent-direktiv %{header}i, der overskriften kan være en HTTP-forespørsel header., Access logg under dette formatet vil se slik ut:

Den ekstra felt er:

"http://www.example.com/start.html"(\"%{Referer}i\") Den «Referer» (sic) HTTP-forespørsel header. Dette gir området som klienten rapporterer å ha blitt henvist fra. (Dette bør være den siden som lenker til eller inneholder/apache_pb.gif)."Mozilla/4.08 (Win98; I ;Nav)"(\"%{User-agent}i\") User-Agent HTTP-forespørsel header. Dette er informasjon som identifiserer deg som klient nettleser rapporter om seg selv.,

Flere Tilgang til Loggene

Flere tilgang til loggene kan opprettes enkelt ved å angi flere CustomLog direktiver i konfigurasjonsfilen. For eksempel, følgende direktiver vil opprette tre tilgang til loggene. Den første inneholder de grunnleggende CLF informasjon, mens andre og tredje inneholde referanse og nettleser informasjon. De to siste CustomLog linjer viser hvordan å etterligne effekten av ReferLog og AgentLog direktiver.,

Dette eksemplet viser også at det ikke er nødvendig å angi et kallenavn med LogFormat direktiv. I stedet log-format kan angis direkte i CustomLog direktiv.

Betinget Logger

Det er tider når det er praktisk å ekskludere visse oppføringer fra tilgang til loggene basert på egenskapene til klienten forespørsel. Dette er lett oppnås ved hjelp av miljøvariabler. For det første, en miljø-variabelen må være satt til å indikere at forespørselen oppfyller visse vilkår., Dette oppnås vanligvis med SetEnvIf. Deretter env= klausulen i CustomLog direktivet er brukt for å inkludere eller ekskludere forespørsler der miljø-variabelen er angitt. Noen eksempler:

Som et annet eksempel, bør du vurdere å logge forespørsler fra engelsk-høyttalere til en loggfil, og ikke-engelsktalende til en annen loggfil.

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

I en caching scenario en ønsker å vite om effektiviteten av buffer., En veldig enkel metode for å finne ut av dette ville være:

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

mod_cache vil kjøre før mod_env og, når det lykkes, vil levere innhold uten det. I så tilfelle en cache hit vil logge -, mens en cache miss vil logge 1.,

I tillegg til env= syntaks, LogFormat støtter logging verdier betinget av HTTP-svar-koden:

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

I det første eksempelet, User-agent vil være logget dersom HTTP status code er 400 eller 501. I andre tilfeller, bokstavelig talt «-» vil bli logget i stedet. På samme måte, i det andre eksemplet Referer vil være logget dersom HTTP status code er ikke 200, 204, eller 302. (Merk «!»før status koder.,

Selv om vi har nettopp vist at betinget logging er meget kraftig og fleksibelt, det er ikke den eneste måten å kontrollere innholdet i loggene. Loggfiler er mer nyttig når de inneholder en fullstendig oversikt over serveren aktivitet. Det er ofte enklere å bare legge-prosessen logg-filer for å fjerne ber om at du ikke ønsker å vurdere.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *