4.1 Liste over loggingsnivåer
Du skrev programmet ditt, lastet det opp til serveren, og så begynner du umiddelbart å ha spørsmål:
- Hvordan sikre at
debug()
metoden ikke fungerer mens du jobber iproduction
? - Det er for mye informasjon i loggene, vil du bare legge igjen feilmeldinger?
- Hvordan se en detaljert logg for en del av applikasjonen?
Selvfølgelig møtte skaperne av tømmerstokkene det samme for flere tiår siden. Jeg vil ikke fortelle deg hvordan dette problemet ble løst i C-språket, men i Java-språket ble det løst veldig vakkert.
Loggen filtrerer dataene før informasjonen skrives til . Du kan veldig raskt redusere/øke detaljene i loggen ved å stille inn loggingsnivået. Disse nivåene er beskrevet i tabellen nedenfor:
Nivå | Merk | |
---|---|---|
1 | ALLE | Logg alle meldinger |
2 | SPOR | Liten melding ved feilsøking |
3 | FEIL | Meldinger som er viktige for feilsøking |
4 | INFO | Enkle meldinger |
5 | VARSLE | Skriv kun fatal, error og advarsel |
6 | FEIL | Skriv bare feil og fatale feil |
7 | FATAL | Skriv kun fatale feil |
8 | AV | Ikke skriv meldinger til loggen |
Disse nivåene brukes ved filtrering av meldinger. Hvis du setter loggingsnivået til WARN
, vil alle meldinger som er mindre viktige enn WARN
bli forkastet: TRACE
, DEBUG
, INFO
. Hvis du setter filtreringsnivået til FATAL
, så til og med ERROR
.
Det er ytterligere to alvorlighetsnivåer som brukes i filtrering - dette OFF
(kast alle meldinger) og ALL
- skriv alle meldinger (forkast ingenting).
4.2 Eksempel på loggoppsett
La oss se på et enkelt eksempel på loggoppsett. For å gjøre dette trenger vi log4j.properties-filen, som kan plasseres i ressursmappen. La oss legge til følgende innhold:
# 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}
Her i den aller første linjen setter vi loggingsnivået - WARN
. Og dette betyr at meldinger som er skrevet til loggeren med status DEBUG
vil INFO
bli ignorert.
- Spesifiser hvilken type vedlegg vi skal bruke -
ConsoleAppender
- Spesifiser hvor vi skal skrive loggen -
System.out
- Vi setter klassen som skal kontrollere opptaksformatet -
PatternLayout
- Still inn opptaksformatet for alle meldinger - dato og klokkeslett
4.3 Populære loggingsfeil
Og et viktig poeng til - populære feil i logging. Det er ikke så mange alternativer for å gjøre noe, men flere vanlige feil kan identifiseres:
- For mye logging . Du bør ikke logge hvert trinn, noe som teoretisk sett kan være viktig. Det er en regel: logger kan laste ytelsen med ikke mer enn 10 % . Ellers vil det være ytelsesproblemer.
- Logger alle data i én fil . Dette vil føre til at det blir veldig vanskelig å lese/skrive til på et tidspunkt, for ikke å nevne at det er filstørrelsesbegrensninger på visse systemer.
- Bruker feil loggingsnivåer . Hvert nivå av logging har klare grenser, og de bør respekteres. Hvis grensen er vag, kan man avtale hvilket nivå som skal brukes.
GO TO FULL VERSION