4.1 Lijst met logniveaus
Je hebt je programma geschreven, geüpload naar de server, en dan begin je meteen met vragen:
- Hoe zorg je ervoor dat
debug()
de methode niet werkt tijdens het werken inproduction
? - Er staat te veel informatie in de logs, wil je alleen foutmeldingen achterlaten?
- Hoe kan ik een gedetailleerd logboek bekijken voor een deel van de applicatie?
Natuurlijk stonden de makers van de logboeken tientallen jaren geleden voor hetzelfde. Ik zal je niet vertellen hoe dit probleem in de C-taal is opgelost, maar in de Java-taal is het heel mooi opgelost.
Het logboek filtert de gegevens voordat de informatie naar het . U kunt het detail van de log heel snel verkleinen/vergroten door het logniveau in te stellen. Deze niveaus worden beschreven in de onderstaande tabel:
Niveau | Opmerking | |
---|---|---|
1 | ALLE | Registreer alle berichten |
2 | SPOOR | Klein bericht bij het debuggen |
3 | DEBUGGEN | Berichten die belangrijk zijn voor foutopsporing |
4 | INFO | Eenvoudige berichten |
5 | WAARSCHUWEN | Schrijf alleen fataal, fout en waarschuwing |
6 | FOUT | Schrijf alleen fouten en fatale fouten |
7 | FATAAL | Schrijf alleen fatale fouten |
8 | UIT | Schrijf geen berichten naar het logboek |
Deze niveaus worden gebruikt bij het filteren van berichten. Als u het logniveau instelt op WARN
, worden alle berichten die minder belangrijk WARN
zijn dan verwijderd: TRACE
, DEBUG
, INFO
. Als u het filterniveau instelt op FATAL
, dan zelfs ERROR
.
Er zijn nog twee niveaus van ernst die worden gebruikt bij het filteren - dit OFF
(alle berichten negeren) en ALL
- alle berichten schrijven (niets negeren).
4.2 Voorbeeld van logboekconfiguratie
Laten we eens kijken naar een eenvoudig voorbeeld van een logboekinstelling. Hiervoor hebben we het bestand log4j.properties nodig, dat in de map resources kan worden geplaatst. Laten we de volgende inhoud eraan toevoegen:
# 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}
Hier stellen we in de allereerste regel het logboekniveau in - WARN
. En dit betekent dat berichten die met status naar de logger worden geschreven, DEBUG
worden INFO
genegeerd.
- Specificeer welk type appender we zullen gebruiken -
ConsoleAppender
- Specificeer waar we het logboek zullen schrijven -
System.out
- We stellen de klasse in die het opnameformaat zal regelen -
PatternLayout
- Stel het opnameformaat in voor alle berichten - datum en tijd
4.3 Populaire logging-fouten
En nog een belangrijk punt - populaire fouten bij het loggen. Er zijn niet zo veel opties om iets te doen, maar er kunnen verschillende veelvoorkomende fouten worden geïdentificeerd:
- Te veel loggen . Je moet niet elke stap loggen, wat in theorie belangrijk kan zijn. Er is een regel: logs mogen de prestaties met niet meer dan 10% belasten . Anders zullen er prestatieproblemen zijn.
- Loggen van alle gegevens in één bestand . Dit zal ervoor zorgen dat het op een bepaald moment erg moeilijk is om te lezen/schrijven, om nog maar te zwijgen van het feit dat er op bepaalde systemen limieten zijn voor de bestandsgrootte.
- Gebruik van de verkeerde logboekniveaus . Elk niveau van houtkap heeft duidelijke grenzen en deze moeten worden gerespecteerd. Als de grens vaag is, kunt u afspreken welk niveau u wilt gebruiken.