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 iproduction
? - 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 WARN
att kasseras: TRACE
, DEBUG
, INFO
. Om du ställer in filtreringsnivån till , FATAL
då ä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 DEBUG
kommer INFO
att 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:
- 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.
- 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.
- 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.
GO TO FULL VERSION