4.1 Lista över loggningsnivåer

Du skrev ditt program, laddade upp det till servern och sedan börjar du genast få frågor:

  • Hur säkerställer man att debug()metoden inte fungerar när man arbetar i production?
  • Det finns för mycket information i loggarna, vill du bara lämna felmeddelanden?
  • Hur ser man en detaljerad logg för en del av applikationen?

Naturligtvis stod skaparna av stockarna inför samma sak för decennier sedan. Jag kommer inte att berätta hur detta problem löstes i C-språket, men i Java-språket löstes det väldigt vackert.

Loggen filtrerar data innan informationen skrivs till . Du kan mycket snabbt minska / öka detaljerna i loggen genom att ställa in loggningsnivån. Dessa nivåer beskrivs i tabellen nedan:

Nivå Notera
1 ALLT Logga alla meddelanden
2 SPÅR Litet meddelande vid felsökning
3 DEBUGA Meddelanden som är viktiga för felsökning
4 INFO Enkla meddelanden
5 VARNA Skriv bara fatal, error och warning
6 FEL Skriv bara fel och ödesdigra fel
7 DÖDLIG Skriv bara fatala fel
8 AV Skriv inte meddelanden till loggen

Dessa nivåer används vid filtrering av meddelanden. Om du ställer in loggningsnivån till WARN, kommer alla meddelanden som är mindre viktiga än WARNatt kasseras: TRACE, DEBUG, INFO. Om du ställer in filtreringsnivån till , FATALdå även ERROR.

Det finns ytterligare två allvarlighetsnivåer som används vid filtrering - detta OFF(kasta alla meddelanden) och ALL- skriv alla meddelanden (kasta ingenting).

4.2 Exempel på logginställningar

Låt oss titta på ett enkelt exempel på logginställningar. För att göra detta behöver vi filen log4j.properties, som kan placeras i resursmappen. Låt oss lägga till följande innehåll:

# 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}

Här i den allra första raden ställer vi in ​​loggningsnivån - WARN. Och detta innebär att meddelanden som skrivs till loggern med status DEBUGkommer INFOatt ignoreras.

  • Specificera vilken typ av bilaga vi ska använda -ConsoleAppender
  • Ange var vi ska skriva loggen -System.out
  • Vi ställer in klassen som ska styra inspelningsformatet -PatternLayout
  • Ställ in inspelningsformat för alla meddelanden - datum och tid

4.3 Populära loggningsfel

Och ytterligare en viktig punkt - populära fel i loggning. Det finns inte så många alternativ för att göra något, men flera vanliga misstag kan identifieras:

  1. För mycket loggning . Du bör inte logga varje steg, vilket teoretiskt sett kan vara viktigt. Det finns en regel: loggar kan ladda prestandan med högst 10 % . Annars blir det prestandaproblem.
  2. Logga all data i en fil . Detta kommer att göra att det blir mycket svårt att läsa/skriva till någon gång, för att inte tala om att det finns filstorleksbegränsningar på vissa system.
  3. Använder fel loggningsnivåer . Varje nivå av loggning har tydliga gränser, och de bör respekteras. Om gränsen är vag kan man komma överens om vilken nivå som ska användas.