CodeGym /Java Course /Modul 3 /Filter log di Log4j

Filter log di Log4j

Modul 3
Level 5 , Pelajaran 4
Tersedia

5.1 Daftar filter

Logger memungkinkan Anda untuk mengonfigurasi pemfilteran pesan dengan sangat keren. Untuk melakukan ini, dia memiliki beberapa lusin filter dengan segala macam parameter. Tabel di bawah ini menunjukkan yang paling populer.

Filter Keterangan
1 BurstFilter Memungkinkan Anda mengontrol frekuensi pesan per detik untuk tingkat logging tertentu.
2 Filter Komposit Memungkinkan Anda menyetel beberapa filter berurutan.
3 DynamicThresholdFilter Memungkinkan Anda untuk mengaktifkan pendataan mendetail jika informasi tertentu ditemukan di log.
4 MapFilter Memungkinkan Anda membuat ekspresi logis kompleks untuk filter dari beberapa parameter.
5 MarkerFilter Memungkinkan Anda memfilter pesan berdasarkan tag, tag harus ditambahkan terlebih dahulu selama pencatatan peristiwa.
6 RegexFilter Memungkinkan Anda menyetel topeng - ekspresi reguler.
7 StructuredDataFilter Memungkinkan Anda memfilter pesan dengan adanya data tertentu di dalamnya.
8 ThreadContextMapFilter Memungkinkan Anda mengelola filter berdasarkan data yang diambil dari konteks utas saat ini.
9 ThresholdFilter Mengontrol logging berdasarkan level pesan log.
10 Filter Waktu Memungkinkan Anda mengaktifkan dan menonaktifkan filter pada waktu tertentu.

Di bawah ini kita akan berbicara tentang hanya tiga dari mereka. Anda dapat mempelajari lebih lanjut tentang filter ini di situs web resmi mereka .

5.2 Filter Waktu

Filter TimeFiltermemungkinkan Anda untuk menghidupkan dan mematikan filter pada waktu tertentu, memiliki 5 parameter:

1 awal Mencatat waktu mulai dalam formatHH:mm:ss
2 akhir Keluar waktu dalam formatHH:mm:ss
3 zona waktu Mengatur zona waktu.
4 onMatch Bagaimana cara login jika kondisi filter benar . Mungkin ACCEPT, DENYatau NEUTRAL. Bawaan NEUTRAL.
5 onMismatch Cara masuk jika kondisi filter salah . Mungkin ACCEPT, DENYatau NEUTRAL. Bawaan NEUTRAL.

Mari siapkan filter yang akan mengaktifkan pencatatan pada jam 5 pagi dan mematikannya pada jam 5:30 setiap hari. Contoh dengan konfigurasi filter lengkap di bawah ini:


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

Filter RegexFiltermemungkinkan Anda menyetel topeng (ekspresi reguler) untuk memfilter pesan. Filter ini memiliki 4 parameter:

1 regex Menentukan ekspresi reguler - topeng yang digunakan untuk memfilter pesan.HH:mm:ss
2 gunakanRawMsg Topeng diterapkan dalam pesan sebelum pemformatan (benar) atau setelah pemformatan (salah)
3 onMatch Bagaimana cara login jika kondisi filter benar . Mungkin ACCEPT, DENYatau NEUTRAL. Bawaan NEUTRAL.
4 onMismatch Cara masuk jika kondisi filter salah . Mungkin ACCEPT, DENYatau NEUTRAL. Bawaan NEUTRAL.

Mari siapkan filter yang hanya mengizinkan pesan yang mengandung kata codegym. Contoh dengan konfigurasi filter lengkap di bawah ini:


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

Filter ThresholdFilter memungkinkan Anda mengonfigurasi pemfilteran berdasarkan tingkat pesan. Ini hanya memiliki 3 parameter:

1 tingkat Menetapkan nama tingkat pencatatan pesan: ERROR, DEBUG, …
2 onMatch Bagaimana cara login jika kondisi filter benar . Mungkin ACCEPT, DENYatau NEUTRAL. Bawaan NEUTRAL.
3 onMismatch Cara masuk jika kondisi filter salah . Mungkin ACCEPT, DENYatau NEUTRAL. Bawaan NEUTRAL.

Mari siapkan filter yang hanya mengizinkan pesan level DEBUG. Contoh dengan konfigurasi filter lengkap di bawah ini:


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