CodeGym /Curs Java /Modulul 3 /Filtre de jurnal în Log4j

Filtre de jurnal în Log4j

Modulul 3
Nivel , Lecţie
Disponibil

5.1 Lista filtrelor

Loggerul vă permite să configurați foarte ușor filtrarea mesajelor. Pentru a face acest lucru, are câteva zeci de filtre cu tot felul de parametri. Tabelul de mai jos le prezintă pe cele mai populare.

Filtre Descriere
1 BurstFilter Vă permite să controlați frecvența mesajelor pe secundă pentru un anumit nivel de înregistrare.
2 CompositeFilter Vă permite să setați mai multe filtre secvențiale.
3 Dynamic ThresholdFilter Vă permite să activați înregistrarea detaliată dacă anumite informații sunt găsite în jurnal.
4 MapFilter Vă permite să construiți o expresie logică complexă pentru filtru din mai mulți parametri.
5 MarkerFilter Vă permite să filtrați mesajele după etichete, eticheta trebuie mai întâi adăugată în timpul înregistrării evenimentelor.
6 RegexFilter Vă permite să setați o mască - o expresie regulată.
7 StructuredDataFilter Vă permite să filtrați mesajele după prezența anumitor date în ele.
8 ThreadContextMapFilter Vă permite să gestionați filtre pe baza datelor preluate din contextul firului curent.
9 ThresholdFilter Controlează înregistrarea în funcție de nivelul mesajului de jurnal.
10 TimeFilter Vă permite să activați și să dezactivați filtrele la anumite ore.

Mai jos vom vorbi despre doar trei dintre ele. Puteți afla mai multe despre aceste filtre pe site-ul lor oficial .

5.2 TimeFilter

Filtrul TimeFiltervă permite să activați și să dezactivați filtrele la un anumit moment, are 5 parametri:

1 start Ora de începere a înregistrării în formatHH:mm:ss
2 Sfârşit Ora de deconectare în formatHH:mm:ss
3 fus orar Setează fusul orar.
4 onMatch Cum se înregistrează dacă condiția filtrului este adevărată . Poate ACCEPT, DENYsau NEUTRAL. Implicit NEUTRAL.
5 peNepotrivire Cum se înregistrează dacă condiția filtrului este falsă . Poate ACCEPT, DENYsau NEUTRAL. Implicit NEUTRAL.

Să instalăm un filtru care va activa înregistrarea la ora 5 dimineața și îl va opri la ora 5:30 în fiecare zi. Un exemplu cu o configurație completă a filtrului este mai jos:


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

Filtrul RegexFiltervă permite să setați o mască (expresie regulată) pentru filtrarea mesajelor. Acest filtru are 4 parametri:

1 regex Specifică o expresie regulată - o mască care este folosită pentru filtrarea mesajelor.HH:mm:ss
2 useRawMsg Masca este aplicată în mesaj înainte de formatare (adevărat) sau după formatare (fals)
3 onMatch Cum se înregistrează dacă condiția filtrului este adevărată . Poate ACCEPT, DENYsau NEUTRAL. Implicit NEUTRAL.
4 peNepotrivire Cum se înregistrează dacă condiția filtrului este falsă . Poate ACCEPT, DENYsau NEUTRAL. Implicit NEUTRAL.

Să setăm un filtru care va permite doar mesajele care conțin cuvântul codegym. Un exemplu cu o configurație completă a filtrului este mai jos:


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

Filtrul ThresholdFilter vă permite să configurați filtrarea după nivel de mesaj. Are doar 3 parametri:

1 nivel Setează numele nivelului de înregistrare a mesajelor: ERROR, DEBUG, …
2 onMatch Cum se înregistrează dacă condiția filtrului este adevărată . Poate ACCEPT, DENYsau NEUTRAL. Implicit NEUTRAL.
3 peNepotrivire Cum se înregistrează dacă condiția filtrului este falsă . Poate ACCEPT, DENYsau NEUTRAL. Implicit NEUTRAL.

Să setăm un filtru care va permite doar mesaje de nivel DEBUG. Un exemplu cu o configurație completă a filtrului este mai jos:


    <?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>
Comentarii
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION