Protokollfilter in Log4j

Verfügbar

5.1 Liste der Filter

Mit dem Logger können Sie die Nachrichtenfilterung sehr cool konfigurieren. Dafür verfügt er über ein paar Dutzend Filter mit allen möglichen Parametern. Die folgende Tabelle zeigt die beliebtesten.

Filter Beschreibung
1 BurstFilter Ermöglicht Ihnen, die Häufigkeit von Nachrichten pro Sekunde für eine bestimmte Protokollierungsstufe zu steuern.
2 CompositeFilter Ermöglicht Ihnen, mehrere sequentielle Filter festzulegen.
3 DynamicThresholdFilter Ermöglicht Ihnen, die detaillierte Protokollierung zu aktivieren, wenn bestimmte Informationen im Protokoll gefunden werden.
4 MapFilter Ermöglicht Ihnen, aus mehreren Parametern einen komplexen logischen Ausdruck für den Filter zu erstellen.
5 MarkerFilter Ermöglicht das Filtern von Nachrichten nach Tags. Das Tag muss zuerst während der Ereignisprotokollierung hinzugefügt werden.
6 RegexFilter Ermöglicht das Festlegen einer Maske – eines regulären Ausdrucks.
7 Strukturierter Datenfilter Ermöglicht Ihnen, Nachrichten nach dem Vorhandensein bestimmter Daten darin zu filtern.
8 ThreadContextMapFilter Ermöglicht die Verwaltung von Filtern basierend auf Daten aus dem Kontext des aktuellen Threads.
9 Schwellenwertfilter Steuert die Protokollierung basierend auf der Protokollnachrichtenebene.
10 ZeitFilter Ermöglicht Ihnen, Filter zu bestimmten Zeiten ein- und auszuschalten.

Im Folgenden werden wir nur über drei davon sprechen. Weitere Informationen zu diesen Filtern finden Sie auf der offiziellen Website .

5.2 Zeitfilter

Mit dem Filter TimeFilterkönnen Sie Filter zu einem bestimmten Zeitpunkt ein- und ausschalten. Er verfügt über 5 Parameter:

1 Start Startzeit der Protokollierung im FormatHH:mm:ss
2 Ende Abmeldezeit im FormatHH:mm:ss
3 Zeitzone Legt die Zeitzone fest.
4 onMatch So protokollieren Sie, ob die Filterbedingung wahr ist . Vielleicht ACCEPT, DENYoder NEUTRAL. Standard NEUTRAL.
5 onMismatch So protokollieren Sie, ob die Filterbedingung falsch ist . Vielleicht ACCEPT, DENYoder NEUTRAL. Standard NEUTRAL.

Richten wir einen Filter ein, der die Protokollierung jeden Tag um 5:00 Uhr morgens einschaltet und um 5:30 Uhr wieder ausschaltet. Nachfolgend finden Sie ein Beispiel mit einer vollständigen Filterkonfiguration:

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

Mit dem Filter RegexFilterkönnen Sie eine Maske (regulären Ausdruck) zum Filtern von Nachrichten festlegen. Dieser Filter hat 4 Parameter:

1 Regex Gibt einen regulären Ausdruck an – eine Maske, die zum Filtern von Nachrichten verwendet wird.HH:mm:ss
2 useRawMsg Die Maske wird in der Nachricht vor der Formatierung (true) oder nach der Formatierung (false) angewendet.
3 onMatch So protokollieren Sie, ob die Filterbedingung wahr ist . Vielleicht ACCEPT, DENYoder NEUTRAL. Standard NEUTRAL.
4 onMismatch So protokollieren Sie, ob die Filterbedingung falsch ist . Vielleicht ACCEPT, DENYoder NEUTRAL. Standard NEUTRAL.

Lassen Sie uns einen Filter einrichten, der nur Nachrichten zulässt, die das Wort CodeGym enthalten. Nachfolgend finden Sie ein Beispiel mit einer vollständigen Filterkonfiguration:

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

Mit dem ThresholdFilter -Filter können Sie die Filterung nach Nachrichtenebene konfigurieren. Es hat nur 3 Parameter:

1 eben Legt den Namen der Nachrichtenprotokollierungsebene fest: ERROR, DEBUG, …
2 onMatch So protokollieren Sie, ob die Filterbedingung wahr ist . Vielleicht ACCEPT, DENYoder NEUTRAL. Standard NEUTRAL.
3 onMismatch So protokollieren Sie, ob die Filterbedingung falsch ist . Vielleicht ACCEPT, DENYoder NEUTRAL. Standard NEUTRAL.

Lassen Sie uns einen Filter einrichten, der nur Nachrichten der Ebene zulässt DEBUG. Nachfolgend finden Sie ein Beispiel mit einer vollständigen Filterkonfiguration:

<?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>
Kommentare
  • Beliebt
  • Neu
  • Alt
Du musst angemeldet sein, um einen Kommentar schreiben zu können
Auf dieser Seite gibt es noch keine Kommentare