CodeGym /Java kursus /Modul 3 /Logfiltre i Log4j

Logfiltre i Log4j

Modul 3
Niveau , Lektie
Ledig

5.1 Liste over filtre

Loggeren giver dig mulighed for meget køligt at konfigurere beskedfiltrering. For at gøre dette har han et par dusin filtre med alle mulige parametre. Tabellen nedenfor viser de mest populære.

Filtre Beskrivelse
1 BurstFilter Giver dig mulighed for at kontrollere frekvensen af ​​beskeder pr. sekund for et givet logningsniveau.
2 Kompositfilter Giver dig mulighed for at indstille flere sekventielle filtre.
3 DynamicThresholdFilter Giver dig mulighed for at aktivere detaljeret logning, hvis der findes visse oplysninger i loggen.
4 MapFilter Giver dig mulighed for at bygge et komplekst logisk udtryk for filteret ud fra flere parametre.
5 MarkerFilter Giver dig mulighed for at filtrere beskeder efter tags, tagget skal først tilføjes under hændelseslogningen.
6 RegexFilter Giver dig mulighed for at indstille en maske - et regulært udtryk.
7 StructuredDataFilter Giver dig mulighed for at filtrere beskeder efter tilstedeværelsen af ​​visse data i dem.
8 ThreadContextMapFilter Giver dig mulighed for at administrere filtre baseret på data taget fra konteksten af ​​den aktuelle tråd.
9 ThresholdFilter Styrer logning baseret på logmeddelelsesniveauet.
10 Tidsfilter Giver dig mulighed for at tænde og slukke for filtre på bestemte tidspunkter.

Nedenfor vil vi kun tale om tre af dem. Du kan lære mere om disse filtre på deres officielle hjemmeside .

5.2 Tidsfilter

Filteret TimeFiltergiver dig mulighed for at tænde og slukke for filtre på et bestemt tidspunkt, det har 5 parametre:

1 Start Logning af starttidspunkt i formatetHH:mm:ss
2 ende Logge af tid i formatetHH:mm:ss
3 tidszone Indstiller tidszonen.
4 på Match Sådan logger du, hvis filterbetingelsen er sand . Måske ACCEPT, DENYeller NEUTRAL. Standard NEUTRAL.
5 på Mismatch Sådan logger du, hvis filterbetingelsen er falsk . Måske ACCEPT, DENYeller NEUTRAL. Standard NEUTRAL.

Lad os opsætte et filter, der aktiverer logning kl. 05.00 og slår det fra kl. 05.30 hver dag. Et eksempel med en komplet filterkonfiguration 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 RegexFiltergiver dig mulighed for at indstille en maske (regulært udtryk) til filtrering af beskeder. Dette filter har 4 parametre:

1 regex Angiver et regulært udtryk - en maske, der bruges til at filtrere meddelelser.HH:mm:ss
2 useRawMsg Masken anvendes i meddelelsen før formatering (sand) eller efter formatering (falsk)
3 på Match Sådan logger du, hvis filterbetingelsen er sand . Måske ACCEPT, DENYeller NEUTRAL. Standard NEUTRAL.
4 på Mismatch Sådan logger du, hvis filterbetingelsen er falsk . Måske ACCEPT, DENYeller NEUTRAL. Standard NEUTRAL.

Lad os opsætte et filter, der kun tillader beskeder, der indeholder ordet codegym. Et eksempel med en komplet filterkonfiguration 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 ThresholdFilter

ThresholdFilter- filteret giver dig mulighed for at konfigurere filtrering efter meddelelsesniveau. Den har kun 3 parametre:

1 niveau Indstiller navnet på meddelelseslogningsniveauet: ERROR, DEBUG, …
2 på Match Sådan logger du, hvis filterbetingelsen er sand . Måske ACCEPT, DENYeller NEUTRAL. Standard NEUTRAL.
3 på Mismatch Sådan logger du, hvis filterbetingelsen er falsk . Måske ACCEPT, DENYeller NEUTRAL. Standard NEUTRAL.

Lad os opsætte et filter, der kun tillader meddelelser på niveau DEBUG. Et eksempel med en komplet filterkonfiguration 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