5.1 Lista över filter

Loggern låter dig konfigurera meddelandefiltrering väldigt coolt. För att göra detta har han ett par dussin filter med alla möjliga parametrar. Tabellen nedan visar de mest populära.

Filter Beskrivning
1 BurstFilter Låter dig styra frekvensen för meddelanden per sekund för en given loggningsnivå.
2 CompositeFilter Låter dig ställa in flera sekventiella filter.
3 DynamicThresholdFilter Låter dig aktivera detaljerad loggning om viss information finns i loggen.
4 MapFilter Låter dig bygga ett komplext logiskt uttryck för filtret från flera parametrar.
5 MarkerFilter Låter dig filtrera meddelanden efter taggar, taggen måste först läggas till under händelseloggningen.
6 RegexFilter Låter dig ställa in en mask - ett reguljärt uttryck.
7 StructuredDataFilter Låter dig filtrera meddelanden efter förekomsten av viss data i dem.
8 ThreadContextMapFilter Låter dig hantera filter baserat på data hämtade från kontexten för den aktuella tråden.
9 Tröskelfilter Styr loggning baserat på loggmeddelandenivån.
10 Tidsfilter Låter dig slå på och av filter vid specifika tidpunkter.

Nedan kommer vi bara att prata om tre av dem. Du kan lära dig mer om dessa filter på deras officiella webbplats .

5.2 Tidsfilter

Filtret TimeFilterlåter dig slå på och av filter vid en viss tidpunkt, det har 5 parametrar:

1 Start Loggningsstarttid i formatetHH:mm:ss
2 slutet Utloggningstid i formatetHH:mm:ss
3 tidszon Ställer in tidszonen.
4 på Match Hur man loggar om filtervillkoret är sant . Kanske ACCEPT, DENYeller NEUTRAL. Standard NEUTRAL.
5 på Missmatch Hur man loggar om filtervillkoret är falskt . Kanske ACCEPT, DENYeller NEUTRAL. Standard NEUTRAL.

Låt oss ställa in ett filter som aktiverar loggning klockan 05.00 och stänger av det klockan 05.30 varje dag. Ett exempel med en komplett filterkonfiguration är nedan:


    <?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

Filtret RegexFilterlåter dig ställa in en mask (reguljärt uttryck) för filtrering av meddelanden. Detta filter har 4 parametrar:

1 regex Anger ett reguljärt uttryck - en mask som används för att filtrera meddelanden.HH:mm:ss
2 useRawMsg Masken tillämpas i meddelandet före formatering (true) eller efter formatering (false)
3 på Match Hur man loggar om filtervillkoret är sant . Kanske ACCEPT, DENYeller NEUTRAL. Standard NEUTRAL.
4 på Missmatch Hur man loggar om filtervillkoret är falskt . Kanske ACCEPT, DENYeller NEUTRAL. Standard NEUTRAL.

Låt oss ställa in ett filter som endast tillåter meddelanden som innehåller ordet codegym. Ett exempel med en komplett filterkonfiguration är nedan:


    <?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 Tröskelfilter

Med filtret ThresholdFilter kan du konfigurera filtrering efter meddelandenivå. Den har bara 3 parametrar:

1 nivå Ställer in namnet på meddelandeloggningsnivån: , ERROR, DEBUG
2 på Match Hur man loggar om filtervillkoret är sant . Kanske ACCEPT, DENYeller NEUTRAL. Standard NEUTRAL.
3 på Missmatch Hur man loggar om filtervillkoret är falskt . Kanske ACCEPT, DENYeller NEUTRAL. Standard NEUTRAL.

Låt oss ställa in ett filter som endast tillåter meddelanden på nivå DEBUG. Ett exempel med en komplett filterkonfiguration är nedan:


    <?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>