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 WARN
vor 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 DEBUG
vor INFO
fi 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