NGINX er en høy-ytelse og pålitelig web-server, i stand til å håndtere store mengder trafikk til internetts største nettsteder. Når feilsøking, trenger du en måte å gjøre følelse av trafikk og NGINX gir fleksibel logging funksjoner for å få tak i verdifull informasjon og hjelpe deg å forstå virkemåten til din web-server.
NGINX tilbyr to forskjellige filer for å logge verdifulle web server data., Disse to filene er error_log og access_log. access_log brukes til å lagre informasjon om web-klient requestsand error_log butikker eller andre uventede informative meldinger.
Konfigurere access_log
access_log fil samler alle klient forespørsler umiddelbart etter at forespørselen er behandlet, og gir deg en flott måte å logge hvilke sider brukere ber om fra webserveren din., Du kan velge hvor acess_log data er skrevet til bruk av følgende konfigurasjonsfilen syntaks:
access_log path ] ];access_log off;
Specifyingformat kan du bruke et egendefinert format i loggene ved hjelp av variabler som antall bytessent til klienten ($bytes_sent) eller forespørsel lengde ($request_length).
Vanligvis, NGINX, logger hver transaksjon itprocesses i access_log. Hvis=tilstand parameteren gir en powerfulway å utføre betinget logging så det onlystores logg logg-meldinger hvis noen betingelse er sann., For eksempel, hvis youonly ønsker å ta opp forespørsler om å returnere en HTTP status 404-kode du kan bruke thefollowing utdrag:
map $status $should_log {404 1;default 0;}access_log logs/access.log combined if=$should_log;
Med denne endringen noen forespørsler completedsuccessfully (2xx), omdirigert til en annen side (3xx) eller støtt på en servererror (5xx) ikke vil være logget inn logger/tilgang.log—only404 feil vil bli logget.
Hvis du har mer enn én virtuell vert ormultiple http server, eller plassering directivesthensometimes det er nyttig å være ableto deaktivere logging i gjeldende direktiv nivå, og den spesielle off-verdi ble opprettet for dette formålet.,Følgende konfigurasjon linjen viser hvordan du kan forhindre NGINX fra writingaccess informasjon til noen access_log targetat dagens nivå:
access_log off;
For en mer utførlig forklaring av configurationoptions, sjekk ut NGINX access_log dokumentasjon.
NGINX Logg Alvorlighetsgrad
NGINX støtter et bredt utvalg av alvorlighetsgrad levelsto gjør det enkelt å logge deg den informasjonen du bryr deg om. Hvert av disse nivåene canbe brukes med error_log directiveto angi minimums nivå på hvilke meldinger som er logget., Her er supportedlevels i laveste til høyeste orden, sammen med en guide på hvordan de er brukt:
- Debug – Feilsøking meldinger som ikke nyttig mesteparten av tiden.
- Info – Informative meldinger som kan være bra å vite.
- legg Merke til – Noe som normalt, men betydelig skjedde, og det bør bemerkes.
- Warn – Noe uventet skjedde, men det er ikke en årsak til bekymring.
- Feil – Noe som mislyktes.
- Crit – En kritisk tilstand har oppstått.
- Varsling – Øyeblikkelig handling er nødvendig.
- Emerg – systemet er ubrukelig.,
Konfigurere error_log
standard error_log fil fanger opp alle logg-meldinger ved feil og alvorlighetsgrad som betyr at det’sprimarily brukes for å forstå dødelig eller kritiske meldinger for å hjelpe withtroubleshooting. Standardplasseringen for error_logis logger/feil.logge. Veien NGINXstores feilmeldinger er fleksibel og—sammen med slik at du kan skrive messagesto en fil—den støtter også sending error_logmessages til stderr eller syslog-nisse. Hvis du kjører NGINXopen kilde 1.5.,2 eller nyere, kan du også sende error_log meldinger til mer enn ett sted på en tid av specifyingmultiple error_log direktiver på thesame konfigurasjon nivå.
Hvis du ønsker å loggføre alle meldinger på eller abovethe advare logg alvorlighetsgraden gjør thefollowing endring i konfigurasjon:
error_log logs/error.log warn;
Logging til Syslog Med NGINX
Både access_log og error_log direktiver støtte for å sende meldinger til en syslog daemon ved hjelp av syslog: string i din konfigurasjon., Følgende utdrag viser syntaks for å bruke et av de direktiver med en syslog daemon:
http {error_log syslog:server;…}
For eksempel, hvis du ønsker å lede alle error_log meldinger med advare eller høyere alvorlighetsgrad til syslogdaemon bruke dette direktiv linje:
error_log syslog:server=192.168.1.1 severity=warn;
Du kan tilpasse syslogconfiguration for å passe til dine omgivelser ved å bruke syslog parameter describedin den NGINXsyslog dokumentasjon.
Frustrasjon-gratis log management. (Det er en ting.,)
Samle, ordne, og administrere dine logger med Papertrail
Ting til å Se Ut For
fleksibilitet NGINX logging gir comesat en kostnad, og det er noen ting å se opp for når du skriver yourconfiguration fil. Vi har allerede dekket NGINX evne til å overstyre loggingconfigurations ved direktiv nivå, og denne funksjonen er svært nyttig forlogging ekstra informasjon når brukere får tilgang til bestemte baner, f.eks., loggingextra trafikkinformasjon for alle brukere som har tilgang til /privat URI., Imidlertid, hjelp av nestede tilgang til loggene kan raskt becomecomplex og du bør være forsiktig med å bruke denne funksjonen for mye.
å Skrive access_logentries til en fil på disken kan forringe server ytelse og øke theresponse ventetid for brukeren forespørsler. For web-servere som trenger å opprettholde highperformance, NGINX gir en måte å skrive logg-meldinger til en syklisk buffer inmemory, helt utenom disk. Å trekke ut disse loggene er mer involvedthan å lese en fil, så bør du bare bruke dette hvis ytelsen er kritisk foryour arbeid.,
for Å bruke denne funksjonen, må versjonen av NGINX må konfigureres ved hjelp av—med-debug-alternativet. Du kan sjekke om dette er tilfelle ved å gjøre dette:
$ nginx -V 2>&1 | grep—‘—with-debug’configure arguments: --with-debug
Inne i konfigurasjonsfilen du kan aktivere skrive oppføringer for å minne med følgende utdrag:
error_log memory:32m debug;...http {...}
Dette vil skrive alle logg-meldinger på debug-nivå. Å trekke den logger meldinger fra minnet innebærer bruk av gdb å koble til NGINX prosessen og kopier og lim inn følgende skript ved ledeteksten:
set $log = ngx_cycle->logwhile $log->writer != ngx_log_memory_writerset $log = $log->nextendset $buf = (ngx_log_memory_buf_t *) $log->wdatadump binary memory debug_log.txt $buf->start $buf->end
avslutt Deretter GDB ved hjelp av Ctrl-D., Ovenfor scriptwill skrive innholdet i minnet til debug_log.txtfile hvor du kan lese det som vanlig.
Konklusjon
NGINX lar deg samle logger for bothroutine tilganger og uventede feil i separate filer for senere analysisand feilsøking. Formatet på access_logfile kan være mye som er tilpasset inkluderer detaljert informasjon aboutrequests for eksempel antallet byte som er sendt til klienten eller be om lengde,og error_log direktiv allowsyou å kontrollere minimum alvorlighetsgraden nivået som kreves for meldinger som skal logges.,Både access_log og error_log direktiver kan overføre logentries til en syslog-nisse, som kan være svært nyttig for utviklere workingwith flere web-servere.
Og hvis alle disse funksjonene er ikke nok foryou, kan du selv skrive error_logentries til en memory buffer for å unngå å skrive til disken og redusere performanceimpact for opptatt med å servere.