CodeGym/Kursy Java/Moduł 3/Filtry dziennika w Log4j

Filtry dziennika w Log4j

Dostępny

5.1 Lista filtrów

Logger pozwala bardzo fajnie skonfigurować filtrowanie wiadomości. Aby to zrobić, ma kilkadziesiąt filtrów z różnymi parametrami. Poniższa tabela przedstawia najpopularniejsze z nich.

Filtry Opis
1 Filtr Burst Pozwala kontrolować częstotliwość komunikatów na sekundę dla danego poziomu logowania.
2 Filtr kompozytowy Umożliwia ustawienie wielu filtrów sekwencyjnych.
3 Dynamiczny filtr progowy Umożliwia włączenie szczegółowego rejestrowania, jeśli w dzienniku zostaną znalezione określone informacje.
4 Filtr mapy Umożliwia zbudowanie złożonego wyrażenia logicznego dla filtra z kilku parametrów.
5 Filtr znaczników Pozwala na filtrowanie wiadomości według tagów, tag musi być najpierw dodany podczas logowania zdarzeń.
6 Filtr wyrażeń regularnych Pozwala ustawić maskę - wyrażenie regularne.
7 Filtr danych strukturalnych Umożliwia filtrowanie wiadomości według obecności w nich określonych danych.
8 Filtr ThreadContextMapFilter Pozwala zarządzać filtrami na podstawie danych pobranych z kontekstu bieżącego wątku.
9 Filtr progowy Steruje rejestrowaniem na podstawie poziomu komunikatu dziennika.
10 Filtr czasu Umożliwia włączanie i wyłączanie filtrów o określonych porach.

Poniżej omówimy tylko trzy z nich. Możesz dowiedzieć się więcej o tych filtrach na ich oficjalnej stronie internetowej .

5.2 Filtr czasu

Filtr TimeFilterumożliwia włączanie i wyłączanie filtrów o określonej godzinie, posiada 5 parametrów:

1 początek Czas rozpoczęcia rejestracji w formacieHH:mm:ss
2 koniec Czas wylogowania w formacieHH:mm:ss
3 strefa czasowa Ustawia strefę czasową.
4 onMatch Jak zalogować się, jeśli warunek filtru jest prawdziwy . Może ACCEPT, DENYlub NEUTRAL. Domyślnie NEUTRAL.
5 onNiedopasowanie Jak się zalogować, jeśli warunek filtra jest fałszywy . Może ACCEPT, DENYlub NEUTRAL. Domyślnie NEUTRAL.

Skonfigurujmy filtr, który będzie włączał logowanie o 5 rano i wyłączał o 5:30 każdego dnia. Przykład z kompletną konfiguracją filtra znajduje się poniżej:

<?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 Filtr wyrażeń regularnych

Filtr RegexFilterumożliwia ustawienie maski (wyrażenia regularnego) do filtrowania wiadomości. Ten filtr ma 4 parametry:

1 wyrażenie regularne Określa wyrażenie regularne - maskę używaną do filtrowania wiadomości.HH:mm:ss
2 użyj RawMsg Maska jest stosowana w wiadomości przed formatowaniem (prawda) lub po formatowaniu (fałsz)
3 onMatch Jak zalogować się, jeśli warunek filtru jest prawdziwy . Może ACCEPT, DENYlub NEUTRAL. Domyślnie NEUTRAL.
4 onNiedopasowanie Jak się zalogować, jeśli warunek filtra jest fałszywy . Może ACCEPT, DENYlub NEUTRAL. Domyślnie NEUTRAL.

Skonfigurujmy filtr, który będzie przepuszczał tylko wiadomości zawierające słowo codegym. Przykład z kompletną konfiguracją filtra znajduje się poniżej:

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

Filtr ThresholdFilter umożliwia skonfigurowanie filtrowania według poziomu wiadomości. Ma tylko 3 parametry:

1 poziom Ustawia nazwę poziomu logowania komunikatów: ERROR, DEBUG, …
2 onMatch Jak zalogować się, jeśli warunek filtru jest prawdziwy . Może ACCEPT, DENYlub NEUTRAL. Domyślnie NEUTRAL.
3 onNiedopasowanie Jak się zalogować, jeśli warunek filtra jest fałszywy . Może ACCEPT, DENYlub NEUTRAL. Domyślnie NEUTRAL.

Skonfigurujmy filtr, który będzie przepuszczał tylko wiadomości o poziomie DEBUG. Przykład z kompletną konfiguracją filtra znajduje się poniżej:

<?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>
Komentarze
  • Popularne
  • Najnowsze
  • Najstarsze
Musisz się zalogować, aby dodać komentarz
Ta strona nie ma jeszcze żadnych komentarzy