5.1 Senarai penapis

Logger membolehkan anda mengkonfigurasi penapisan mesej dengan sangat sejuk. Untuk melakukan ini, dia mempunyai beberapa dozen penapis dengan pelbagai parameter. Jadual di bawah menunjukkan yang paling popular.

Penapis Penerangan
1 Penapis Burst Membolehkan anda mengawal kekerapan mesej sesaat untuk tahap pengelogan tertentu.
2 Penapis Komposit Membolehkan anda menetapkan berbilang penapis berjujukan.
3 Penapis Ambang Dinamik Membolehkan anda mendayakan pengelogan terperinci jika maklumat tertentu ditemui dalam log.
4 Penapis Peta Membolehkan anda membina ungkapan logik yang kompleks untuk penapis daripada beberapa parameter.
5 Penapis Penanda Membolehkan anda menapis mesej mengikut teg, teg mesti ditambah dahulu semasa pengelogan acara.
6 RegexFilter Membolehkan anda menetapkan topeng - ungkapan biasa.
7 StructuredDataFilter Membolehkan anda menapis mesej dengan kehadiran data tertentu di dalamnya.
8 ThreadContextMapFilter Membolehkan anda mengurus penapis berdasarkan data yang diambil daripada konteks urutan semasa.
9 Penapis Ambang Mengawal pengelogan berdasarkan tahap mesej log.
10 Penapis Masa Membolehkan anda menghidupkan dan mematikan penapis pada masa tertentu.

Di bawah ini kita akan bercakap tentang hanya tiga daripadanya. Anda boleh mengetahui lebih lanjut tentang penapis ini di tapak web rasmi mereka .

5.2 Penapis Masa

Penapis TimeFiltermembolehkan anda menghidupkan dan mematikan penapis pada masa tertentu, ia mempunyai 5 parameter:

1 mulakan Masa mula log dalam formatHH:mm:ss
2 tamat Masa log keluar dalam formatHH:mm:ss
3 Zon masa Menetapkan zon waktu.
4 onMatch Bagaimana untuk log jika keadaan penapis adalah benar . Mungkin ACCEPT, DENYatau NEUTRAL. Lalai NEUTRAL.
5 pada Tidak Padan Bagaimana untuk log jika keadaan penapis adalah palsu . Mungkin ACCEPT, DENYatau NEUTRAL. Lalai NEUTRAL.

Mari sediakan penapis yang akan menghidupkan pengelogan pada pukul 5 pagi dan matikannya pada pukul 5:30 pagi setiap hari. Contoh dengan konfigurasi penapis lengkap adalah di bawah:


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

Penapis RegexFiltermembenarkan anda menetapkan topeng (ungkapan biasa) untuk menapis mesej. Penapis ini mempunyai 4 parameter:

1 regex Menentukan ungkapan biasa - topeng yang digunakan untuk menapis mesej.HH:mm:ss
2 gunakanRawMsg Topeng digunakan dalam mesej sebelum memformat (benar) atau selepas memformat (salah)
3 onMatch Bagaimana untuk log jika keadaan penapis adalah benar . Mungkin ACCEPT, DENYatau NEUTRAL. Lalai NEUTRAL.
4 pada Tidak Padan Bagaimana untuk log jika keadaan penapis adalah palsu . Mungkin ACCEPT, DENYatau NEUTRAL. Lalai NEUTRAL.

Mari kita sediakan penapis yang hanya membenarkan mesej yang mengandungi perkataan codegym. Contoh dengan konfigurasi penapis lengkap adalah di bawah:


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

Penapis ThresholdFilter membolehkan anda mengkonfigurasi penapisan mengikut tahap mesej. Ia hanya mempunyai 3 parameter:

1 tahap Menetapkan nama tahap pengelogan mesej: ERROR, DEBUG, …
2 onMatch Bagaimana untuk log jika keadaan penapis adalah benar . Mungkin ACCEPT, DENYatau NEUTRAL. Lalai NEUTRAL.
3 pada Tidak Padan Bagaimana untuk log jika keadaan penapis adalah palsu . Mungkin ACCEPT, DENYatau NEUTRAL. Lalai NEUTRAL.

Mari sediakan penapis yang hanya membenarkan mesej tahap DEBUG. Contoh dengan konfigurasi penapis lengkap adalah di bawah:


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