4.1 Lista nivelurilor de înregistrare
Ți-ai scris programul, l-ai încărcat pe server și apoi imediat începi să ai întrebări:
- Cum să vă asigurați că
debug()metoda nu funcționează în timp ce lucrațiproduction? - Există prea multe informații în jurnal, ați dori să lăsați doar mesaje de eroare?
- Cum să vezi un jurnal detaliat pentru o parte a aplicației?
Desigur, creatorii buștenilor s-au confruntat cu același lucru cu zeci de ani în urmă. Nu vă voi spune cum a fost rezolvată această problemă în limbajul C, dar în limbajul Java a fost rezolvată foarte frumos.
Jurnalul filtrează datele înainte de a scrie informațiile în . Puteți reduce/crește foarte rapid detaliile jurnalului prin setarea nivelului de înregistrare. Aceste niveluri sunt descrise în tabelul de mai jos:
| Nivel | Notă | |
|---|---|---|
| 1 | TOATE | Înregistrați toate mesajele |
| 2 | URMĂ | Mic mesaj la depanare |
| 3 | DEBUG | Mesaje importante pentru depanare |
| 4 | INFO | Mesaje simple |
| 5 | A AVERTIZA | Scrieți numai fatal, eroare și avertisment |
| 6 | EROARE | Scrieți numai erori și erori fatale |
| 7 | FATAL | Scrieți numai erori fatale |
| 8 | OFF | Nu scrieți mesaje în jurnal |
Aceste niveluri sunt folosite la filtrarea mesajelor. Dacă setați nivelul de înregistrare la WARN, atunci toate mesajele mai puțin importante decât WARNvor fi eliminate: TRACE, DEBUG, INFO. Dacă setați nivelul de filtrare la FATAL, atunci chiar ERROR.
Există încă două niveluri de severitate care sunt utilizate în filtrare - acesta OFF(renunțați la toate mesajele) și ALL- scrieți toate mesajele (renunțați nimic).
4.2 Exemplu de configurare a jurnalului
Să ne uităm la un exemplu simplu de configurare a jurnalului. Pentru a face acest lucru, avem nevoie de fișierul log4j.properties, care poate fi plasat în folderul resurse. Să adăugăm următorul conținut:
# Root logger option
log4j.rootLogger=WARN, stdout
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}
Aici, în prima linie, setăm nivelul de înregistrare - WARN. Și asta înseamnă că mesajele care sunt scrise în logger cu stare DEBUGvor INFOfi ignorate.
- Specificați ce tip de anexă vom folosi -
ConsoleAppender - Specificați unde vom scrie jurnalul -
System.out - Am stabilit clasa care va controla formatul de înregistrare -
PatternLayout - Setați formatul de înregistrare pentru toate mesajele - data și ora
4.3 Greșeli populare de înregistrare
Și încă un punct important - erori populare în înregistrare. Nu există atât de multe opțiuni pentru a face ceva, dar pot fi identificate câteva greșeli comune:
- Prea mult logare . Nu ar trebui să înregistrați fiecare pas, ceea ce teoretic poate fi important. Există o regulă: jurnalele pot încărca performanța cu cel mult 10% . În caz contrar, vor apărea probleme de performanță.
- Înregistrarea tuturor datelor într-un singur fișier . Acest lucru va face să fie foarte dificil de citit/scris la un moment dat, ca să nu mai vorbim de faptul că există limite de dimensiune a fișierelor pe anumite sisteme.
- Utilizarea nivelurilor de înregistrare greșite . Fiecare nivel de exploatare are limite clare și trebuie respectate. Dacă granița este vagă, puteți conveni ce nivel să utilizați.
GO TO FULL VERSION