Log Files (Română)

Access Log

Jurnalul de acces la server înregistrează toate solicitările procesate de server. Locația și conținutul jurnalului de acces sunt controlate de Directiva CustomLog. Directiva LogFormat poate fi utilizată pentru a simplifica selectarea conținutului jurnalelor. Această secțiune descrie modul de configurare a serverului pentru a înregistra informații în Jurnalul de acces.desigur, stocarea informațiilor în Jurnalul de acces este doar începutul gestionării jurnalului., Următorul pas este de a analiza aceste informații pentru a produce statistici utile. Analiza jurnalului, în general, depășește domeniul de aplicare al acestui document și nu face parte din activitatea serverului web în sine. Pentru mai multe informații despre acest subiect și pentru aplicațiile care efectuează analiza jurnalului, verificați Open Directory.

Diferite versiuni de Apache httpd-au folosit alte module și directive de control acces de logare, inclusiv mod_log_referer, mod_log_agent, și TransferLog directiva., Directiva CustomLog subsumează acum funcționalitatea tuturor directivelor mai vechi.formatul jurnalului de acces este foarte configurabil. Formatul este specificat folosind un șir de format care arată mult ca un șir de format tip C printf(1). Câteva exemple sunt prezentate în secțiunile următoare. Pentru o listă completă a conținutului posibil al șirului de format, consultați șirurile de format mod_log_config.

format jurnal comun

o configurație tipică pentru jurnalul de acces ar putea arăta după cum urmează.,

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

Aceasta definește porecla common și asociați-l cu un anumit format de jurnal șir. Șirul de format este format din directive procentuale, fiecare dintre acestea spunând serverului să înregistreze o anumită informație. Caracterele literale pot fi, de asemenea, plasate în șirul de format și vor fi copiate direct în ieșirea jurnalului. Caracterul citat (") trebuie să fie scăpat prin plasarea unui backslash înainte de a-l împiedica să fie interpretat ca sfârșitul șirului de format., Șirul de format poate conține, de asemenea, de control speciale de caractere „\n” pentru nou-line și „\t” pentru tab.

directiva CustomLog stabilește un nou fișier jurnal folosind porecla definită. Numele fișierului pentru jurnalul de acces este relativ la ServerRoot dacă nu începe cu o bară oblică.

configurația de mai sus va scrie intrările de jurnal într-un format cunoscut sub numele de Common Log Format (CLF). Acest format standard poate fi produs de multe servere web diferite și citit de multe programe de analiză a jurnalelor., Intrările de fișiere jurnal produse în CLF vor arăta astfel:

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

fiecare parte a acestei intrări de jurnal este descrisă mai jos.

127.0.0.1(%h) Aceasta este adresa IP a clientului (remote host) care a făcut cererea la server. DacăHostnameLookupseste setat laOn, atunci serverul va încerca să determine hostname-ul și conectați-l în loc de adresa IP. Cu toate acestea, această configurație nu este recomandată, deoarece poate încetini semnificativ serverul., În schimb, este mai bine să utilizați un jurnal post-procesor, cum ar filogresolvepentru a determina numele de gazdă. Adresa IP raportată aici nu este neapărat adresa mașinii la care se află utilizatorul. Dacă există un server proxy între utilizator și server, Această adresă va fi adresa proxy-ului, mai degrabă decât mașina de origine.-(%l)” cratima ” din ieșire indică faptul că informațiile solicitate nu sunt disponibile., În acest caz, informațiile care nu sunt disponibile sunt identitatea RFC 1413 a clientului determinată deidentdpe mașina clienți. Aceste informații sunt extrem de nesigure și nu ar trebui să fie utilizate aproape niciodată, cu excepția rețelelor interne strict controlate. Apache httpd nici măcar nu va încerca să determine dacăIdentityCheckeste setat laOn.frank(%u) acesta este userid-ul persoanei care solicită documentul determinat prin autentificarea HTTP., Aceeași valoare este de obicei furnizată scripturilor CGI în variabila de mediuREMOTE_USER. Dacă codul de stare pentru solicitare (vezi mai jos) este 401, atunci această valoare nu trebuie să fie de încredere, deoarece utilizatorul nu este încă autentificat. Dacă documentul nu este protejat prin parolă, această parte va fi „-” la fel ca cea anterioară.(%t) momentul În care cererea a fost primită., Formatul este:

este posibil să aveți timp afișat în alt format prin specificarea %{format}t în jurnal în format șir de caractere, în cazul în care format este fie ca în strftime(3) din biblioteca standard C, sau unul dintre sprijinit jetoane speciale. Pentru detalii, consultați șirurile de format mod_log_config.

"GET /apache_pb.gif HTTP/1.0"(\"%r\") linia de solicitare de la client este dată în ghilimele duble. Linia de solicitare conține o mulțime de informații utile., În primul rând, metoda utilizată de client esteGET. În al doilea rând, clientul a solicitat resurse/apache_pb.gif, și în al treilea rând, clientul a folosit protocolHTTP/1.0. De asemenea, este posibil să înregistrați una sau mai multe părți ale liniei de solicitare în mod independent. De exemplu, șirul de format „

%m %U%q %H” va log metoda, calea, query-string, și a protocolului, care rezultă în exact aceeași putere ca „%r„.200(%>s) acesta este codul de stare pe care serverul îl trimite înapoi la client., Aceste informații sunt foarte valoroase, deoarece dezvăluie dacă cererea a dus la un răspuns de succes (coduri început în 2), o redirectare (coduri începând din 3), o eroare cauzată de client (coduri început în 4), sau de o eroare de server (coduri începând din 5). Lista completă a codurilor de stare posibile poate fi găsită în specificația HTTP (RFC2616 secțiunea 10).2326(%b) ultima parte indică dimensiunea obiectului returnat clientului, inclusiv anteturile de răspuns., Dacă niciun conținut nu a fost returnat clientului, această valoare va fi „-„. Pentru a vă conecta „0„fără conținut, utilizați%Bîn schimb.

format jurnal combinat

Un alt șir de format utilizat în mod obișnuit se numește format jurnal combinat. Poate fi folosit după cum urmează.

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

acest format este exact același cu formatul obișnuit de jurnal, cu adăugarea a încă două câmpuri. Fiecare dintre câmpurile suplimentare utilizează Directiva procentuală %{header}i, unde antetul poate fi orice antet de solicitare HTTP., Accesul jurnal sub acest format va arata astfel:

câmpuri suplimentare sunt:

"http://www.example.com/start.html"(\"%{Referer}i\") A „Referer” (sic) cerere HTTP antet. Acest lucru oferă site-ului pe care clientul raportează că a fost trimis. (Aceasta ar trebui să fie pagina care leagă sau include/apache_pb.gif)."Mozilla/4.08 (Win98; I ;Nav)"(\"%{User-agent}i\") antetul cererii HTTP utilizator-Agent. Acestea sunt informațiile de identificare pe care browserul client le raportează despre sine.,

jurnalele de acces Multiple

jurnalele de acces Multiple pot fi create pur și simplu prin specificarea mai multor directive CustomLog în fișierul de configurare. De exemplu, următoarele directive vor crea trei jurnale de acces. Primul conține informațiile de bază CLF, în timp ce al doilea și al treilea conțin informații despre referer și browser. Ultimele două CustomLog linii de show cum pentru a imita efectele ReferLog și AgentLog directive.,

Acest exemplu arată, de asemenea, că nu este necesar să se definească un pseudonim cu Directiva LogFormat. În schimb, formatul jurnalului poate fi specificat direct în Directiva CustomLog.

jurnale condiționale

există momente în care este convenabil să excludem anumite intrări din jurnalele de acces pe baza caracteristicilor cererii clientului. Acest lucru este ușor de realizat cu ajutorul variabilelor de mediu. În primul rând, trebuie setată o variabilă de mediu pentru a indica faptul că cererea îndeplinește anumite condiții., Acest lucru este de obicei realizat cu SetEnvIf. Apoi, clauza env= din Directiva CustomLog este utilizată pentru a include sau exclude cererile în care este setată variabila de mediu. Câteva exemple:

ca un alt exemplu, luați în considerare cererile de logare de la vorbitori de engleză la un fișier jurnal, și vorbitori non-engleză la un fișier jurnal diferit.

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

într-un scenariu de cache ar dori să știe despre eficiența cache., O metoda foarte simpla de a afla acest lucru ar fi:

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

mod_cache va rula înainte mod_env și, atunci când de succes, va livra conținut fără ea. În acest caz, un cache hit va log -, în timp ce un cache miss va log 1.,

În plus față de env= sintaxa, LogFormat sprijină exploatarea valori condiționată de cod de răspuns HTTP:

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

În primul exemplu, User-agent va fi înregistrat dacă codul de stare HTTP este de 400 sau 501. În alte cazuri, un literal ” – ” va fi înregistrat în schimb. De asemenea, în al doilea exemplu, Referer va fi înregistrat dacă codul de stare HTTP nu este 200, 204 sau 302. (Notă”!”înainte de codurile de stare.,deși tocmai am arătat că logarea condiționată este foarte puternică și flexibilă, nu este singura modalitate de a controla conținutul jurnalelor. Fișierele jurnal sunt mai utile atunci când conțin o înregistrare completă a activității serverului. Adesea este mai ușor să post-procesați fișierele jurnal pentru a elimina solicitările pe care nu doriți să le luați în considerare.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *