CodeGym/Java Kursu/Modül 3/Log4j'de günlük filtreleri

Log4j'de günlük filtreleri

Mevcut

5.1 Filtre listesi

Günlükçü, mesaj filtrelemeyi çok soğuk bir şekilde yapılandırmanıza izin verir. Bunu yapmak için her türlü parametreye sahip birkaç düzine filtresi var. Aşağıdaki tablo en popüler olanları göstermektedir.

Filtreler Tanım
1 Patlama Filtresi Belirli bir kayıt düzeyi için saniyedeki mesaj sıklığını kontrol etmenizi sağlar.
2 Bileşik Filtre Birden çok sıralı filtre ayarlamanıza olanak tanır.
3 Dinamik Eşik Filtresi Günlükte belirli bilgiler bulunursa ayrıntılı günlük kaydını etkinleştirmenizi sağlar.
4 Harita Filtresi Birkaç parametreden filtre için karmaşık bir mantıksal ifade oluşturmanıza olanak tanır.
5 İşaret Filtresi Mesajları etiketlere göre filtrelemenize izin verir, etiket önce olay kaydı sırasında eklenmelidir.
6 normal ifade filtresi Bir maske - normal bir ifade - ayarlamanıza izin verir.
7 Yapılandırılmış Veri Filtresi İletileri, içlerinde belirli verilerin varlığına göre filtrelemenize olanak tanır.
8 ThreadContextMapFilter Geçerli iş parçacığının bağlamından alınan verilere dayalı olarak filtreleri yönetmenize olanak tanır.
9 Eşik Filtresi Günlük ileti düzeyine göre günlüğe kaydetmeyi denetler.
10 Zaman Filtresi Filtreleri belirli zamanlarda açıp kapatmanızı sağlar.

Aşağıda sadece üç tanesinden bahsedeceğiz. Bu filtreler hakkında daha fazla bilgiyi resmi web sitelerinde bulabilirsiniz .

5.2 Zaman Filtresi

Filtre, TimeFilterfiltreleri belirli bir zamanda açıp kapatmanıza izin verir, 5 parametreye sahiptir:

1 başlangıç Formatta başlangıç ​​zamanını günlüğe kaydetmeHH:mm:ss
2 son Biçimde oturum kapatma süresiHH:mm:ss
3 saat dilimi Saat dilimini ayarlar.
4 Maçta Filtre koşulu doğruysa nasıl günlüğe kaydedilir . Belki ACCEPT, DENYveya NEUTRAL. varsayılan NEUTRAL_
5 onMismatch Filtre koşulu yanlışsa nasıl günlüğe kaydedilir . Belki ACCEPT, DENYveya NEUTRAL. varsayılan NEUTRAL_

Her gün günlüğe kaydetmeyi sabah 5'te açacak ve sabah 5:30'da kapatacak bir filtre ayarlayalım. Eksiksiz bir filtre yapılandırmasına sahip bir örnek aşağıdadır:

<?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 Normal İfade Filtresi

Filtre, RegexFiltermesajları filtrelemek için bir maske (normal ifade) ayarlamanıza olanak tanır. Bu filtrenin 4 parametresi vardır:

1 normal ifade Mesajları filtrelemek için kullanılan bir maske olan normal bir ifade belirtir.HH:mm:ss
2 kullanımRawMsg Maske, mesaja biçimlendirmeden önce (doğru) veya biçimlendirmeden sonra (yanlış) uygulanır.
3 Maçta Filtre koşulu doğruysa nasıl günlüğe kaydedilir . Belki ACCEPT, DENYveya NEUTRAL. varsayılan NEUTRAL_
4 onMismatch Filtre koşulu yanlışsa nasıl günlüğe kaydedilir . Belki ACCEPT, DENYveya NEUTRAL. varsayılan NEUTRAL_

Sadece codegym kelimesini içeren mesajlara izin verecek bir filtre oluşturalım. Eksiksiz bir filtre yapılandırmasına sahip bir örnek aşağıdadır:

<?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 Eşik Filtresi

ThresholdFilter filtresi, filtrelemeyi mesaj düzeyine göre yapılandırmanıza olanak tanır. Yalnızca 3 parametresi vardır:

1 seviye Mesaj günlüğü seviyesinin adını ayarlar: ERROR, DEBUG, …
2 Maçta Filtre koşulu doğruysa nasıl günlüğe kaydedilir . Belki ACCEPT, DENYveya NEUTRAL. varsayılan NEUTRAL_
3 onMismatch Filtre koşulu yanlışsa nasıl günlüğe kaydedilir . Belki ACCEPT, DENYveya NEUTRAL. varsayılan NEUTRAL_

Sadece level mesajlarına izin verecek bir filtre kuralım DEBUG. Eksiksiz bir filtre yapılandırmasına sahip bir örnek aşağıdadır:

<?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>
Yorumlar
  • Popüler
  • Yeni
  • Eskimiş
Yorum bırakmak için giriş yapmalısınız
Bu sayfada henüz yorum yok