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 in production?
  • 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 WARNzijn 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, DEBUGworden INFOgenegeerd.

  • 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:

  1. 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.
  2. 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.
  3. 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.