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 i production?
  • 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 WARNbli 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 DEBUGvil INFObli 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:

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