CodeGym/Java Course/Module 3/Logfilters in Log4j

Logfilters in Log4j

Beschikbaar

5.1 Lijst met filters

Met de logger kunt u het filteren van berichten heel cool configureren. Hiervoor heeft hij een paar dozijn filters met allerlei parameters. De onderstaande tabel toont de meest populaire.

Filters Beschrijving
1 Burstfilter Hiermee kunt u de frequentie van berichten per seconde regelen voor een bepaald logniveau.
2 SamengesteldFilter Hiermee kunt u meerdere opeenvolgende filters instellen.
3 DynamicThresholdFilter Hiermee kunt u gedetailleerde logboekregistratie inschakelen als bepaalde informatie in het logboek wordt gevonden.
4 MapFilter Hiermee kunt u een complexe logische uitdrukking voor het filter samenstellen op basis van verschillende parameters.
5 MarkerFilter Hiermee kunt u berichten filteren op tags, de tag moet eerst worden toegevoegd tijdens het vastleggen van gebeurtenissen.
6 RegexFilter Hiermee kunt u een masker instellen - een reguliere expressie.
7 StructuredDataFilter Hiermee kunt u berichten filteren op de aanwezigheid van bepaalde gegevens erin.
8 ThreadContextMapFilter Hiermee kunt u filters beheren op basis van gegevens uit de context van de huidige thread.
9 Drempelfilter Beheert logboekregistratie op basis van het logboekberichtniveau.
10 Tijdfilter Hiermee kunt u filters op bepaalde tijden in- en uitschakelen.

Hieronder zullen we het hebben over slechts drie van hen. U kunt meer over deze filters leren op hun officiële website .

5.2 Tijdfilter

Met het filter TimeFilterkunt u filters op een bepaald moment in- en uitschakelen, het heeft 5 parameters:

1 begin Starttijd vastleggen in het formaatHH:mm:ss
2 einde Afmeldtijd in het formaatHH:mm:ss
3 tijdzone Stelt de tijdzone in.
4 opMatch Hoe te loggen als de filtervoorwaarde waar is . Misschien ACCEPT, DENYof NEUTRAL. Standaard NEUTRAL.
5 opMismatch Hoe te loggen als de filtervoorwaarde onwaar is . Misschien ACCEPT, DENYof NEUTRAL. Standaard NEUTRAL.

Laten we een filter instellen dat logboekregistratie elke dag om 05.00 uur inschakelt en om 05.30 uur uitschakelt. Een voorbeeld met een volledige filterconfiguratie staat hieronder:

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

Met het filter RegexFilterkunt u een masker (reguliere expressie) instellen voor het filteren van berichten. Dit filter heeft 4 parameters:

1 regex Specificeert een reguliere expressie - een masker dat wordt gebruikt om berichten te filteren.HH:mm:ss
2 gebruikRawMsg Het masker wordt toegepast in het bericht vóór formatteren (true) of na formatteren (false)
3 opMatch Hoe te loggen als de filtervoorwaarde waar is . Misschien ACCEPT, DENYof NEUTRAL. Standaard NEUTRAL.
4 opMismatch Hoe te loggen als de filtervoorwaarde onwaar is . Misschien ACCEPT, DENYof NEUTRAL. Standaard NEUTRAL.

Laten we een filter instellen dat alleen berichten toestaat die het woord codegym bevatten. Een voorbeeld met een volledige filterconfiguratie staat hieronder:

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

Met het ThresholdFilter -filter kunt u filteren op berichtniveau configureren. Het heeft slechts 3 parameters:

1 niveau Stelt de naam van het berichtregistratieniveau in: ERROR, DEBUG, …
2 opMatch Hoe te loggen als de filtervoorwaarde waar is . Misschien ACCEPT, DENYof NEUTRAL. Standaard NEUTRAL.
3 opMismatch Hoe te loggen als de filtervoorwaarde onwaar is . Misschien ACCEPT, DENYof NEUTRAL. Standaard NEUTRAL.

Laten we een filter instellen dat alleen berichten van niveau toestaat DEBUG. Een voorbeeld met een volledige filterconfiguratie staat hieronder:

<?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>
Opmerkingen
  • Populair
  • Nieuw
  • Oud
Je moet ingelogd zijn om opmerkingen te kunnen maken
Deze pagina heeft nog geen opmerkingen