CodeGym /Java kurs /Modul 3 /Loggfiltre i Log4j

Loggfiltre i Log4j

Modul 3
Nivå , Lekse
Tilgjengelig

5.1 Liste over filtre

Loggeren lar deg kjølig konfigurere meldingsfiltrering. For å gjøre dette har han et par dusin filtre med alle slags parametere. Tabellen nedenfor viser de mest populære.

Filtre Beskrivelse
1 BurstFilter Lar deg kontrollere frekvensen av meldinger per sekund for et gitt loggingsnivå.
2 Komposittfilter Lar deg angi flere sekvensielle filtre.
3 DynamicThresholdFilter Lar deg aktivere detaljert logging hvis viss informasjon finnes i loggen.
4 Kartfilter Lar deg bygge et komplekst logisk uttrykk for filteret fra flere parametere.
5 MarkerFilter Lar deg filtrere meldinger etter tagger, taggen må først legges til under hendelsesloggingen.
6 RegexFilter Lar deg angi en maske - et regulært uttrykk.
7 StructuredDataFilter Lar deg filtrere meldinger etter tilstedeværelsen av visse data i dem.
8 ThreadContextMapFilter Lar deg administrere filtre basert på data hentet fra konteksten til gjeldende tråd.
9 ThresholdFilter Styrer logging basert på loggmeldingsnivået.
10 Tidsfilter Lar deg slå filtre av og på til bestemte tider.

Nedenfor skal vi snakke om bare tre av dem. Du kan lære mer om disse filtrene på deres offisielle nettside .

5.2 Tidsfilter

Filteret TimeFilterlar deg slå filtre på og av på et bestemt tidspunkt, det har 5 parametere:

1 start Logging av starttid i formatetHH:mm:ss
2 slutt Avloggingstid i formatetHH:mm:ss
3 tidssone Stiller inn tidssonen.
4 på Match Hvordan logge hvis filterbetingelsen er sann . Kanskje ACCEPT, DENYeller NEUTRAL. Standard NEUTRAL.
5 på Mismatch Hvordan logge hvis filtertilstanden er usann . Kanskje ACCEPT, DENYeller NEUTRAL. Standard NEUTRAL.

La oss sette opp et filter som vil slå på logging klokken 05.00 og slå det av klokken 05.30 hver dag. Et eksempel med en komplett filterkonfigurasjon er nedenfor:


    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="warn" name="MyApp" packages="">
    <Appenders>
        <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
        <TimeFilter start="05:00:00" end="05:30:00" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout>
            <pattern>%d %p %c{1.} [%t] %m%n</pattern>
        </PatternLayout>
        <TimeBasedTriggeringPolicy />
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="error">
        <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
    </Configuration>

5.3 RegexFilter

Filteret RegexFilterlar deg sette en maske (regulært uttrykk) for filtrering av meldinger. Dette filteret har 4 parametere:

1 regulært uttrykk Spesifiserer et regulært uttrykk - en maske som brukes til å filtrere meldinger.HH:mm:ss
2 useRawMsg Masken brukes i meldingen før formatering (true) eller etter formatering (false)
3 på Match Hvordan logge hvis filterbetingelsen er sann . Kanskje ACCEPT, DENYeller NEUTRAL. Standard NEUTRAL.
4 på Mismatch Hvordan logge hvis filtertilstanden er usann . Kanskje ACCEPT, DENYeller NEUTRAL. Standard NEUTRAL.

La oss sette opp et filter som bare vil tillate meldinger som inneholder ordet codegym. Et eksempel med en komplett filterkonfigurasjon er nedenfor:


    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="warn" name="MyApp" packages="">
    <Appenders>
        <RollingFile name="RollingFile" fileName="logs/app.log"   filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
        <RegexFilter regex=".* codegym .*" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout>
            <pattern>%d %p %c{1.} [%t] %m%n</pattern>
        </PatternLayout>
        <TimeBasedTriggeringPolicy />
        </RollingFile>
      </Appenders>
    <Loggers>
        <Root level="error">
        <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
    </Configuration>

5.4 Terskelfilter

ThresholdFilter -filteret lar deg konfigurere filtrering etter meldingsnivå. Den har bare 3 parametere:

1 nivå Angir navnet på meldingsloggingsnivået: ERROR, DEBUG, …
2 på Match Hvordan logge hvis filterbetingelsen er sann . Kanskje ACCEPT, DENYeller NEUTRAL. Standard NEUTRAL.
3 på Mismatch Hvordan logge hvis filtertilstanden er usann . Kanskje ACCEPT, DENYeller NEUTRAL. Standard NEUTRAL.

La oss sette opp et filter som bare tillater meldinger på nivå DEBUG. Et eksempel med en komplett filterkonfigurasjon er nedenfor:


    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="warn" name="MyApp" packages="">
    <Appenders>
        <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
           <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout>
            <pattern>%d %p %c{1.} [%t] %m%n</pattern>
        </PatternLayout>
        <TimeBasedTriggeringPolicy />
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="error">
        <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
    </Configuration>
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION