CodeGym/Java Kursu/Modül 3/Log4j'deki Ekler

Log4j'deki Ekler

Mevcut

Ekleyenlerin listesi

Kaydedici, verileri aynı anda birkaç dosyaya kaydetmenize olanak tanır. Bu tür çıktı veri akışlarına ekleyiciler (eklemeden) denir. Pek çok standart ekleyici vardır, bu nedenle yalnızca en popüler olanları ele alacağız:

ekleyenler Tanım
1 Konsol Verileri konsola yazdırır
2 dosya Verileri bir dosyaya verir
3 DailyRollingDosyası Verileri bir dosyaya çıkarır, dosyanın üzerine çevrimsel olarak yazılır
4 zaman uyumsuz Eşzamansız olarak başka bir ekleyiciye veri yazmanıza izin verir
5 Priz Verileri belirli bir sokete yazar
6 JDBC JDBC protokolünü kullanarak veritabanına mesaj yazar
7 JPA JPA protokolünü kullanarak veritabanına mesaj yazar
8 HTTP Olayları HTTP protokolü aracılığıyla uzak bir sunucuya gönderir
9 SMTP İletileri bir arabellekte depolar ve ardından e-posta olarak gönderir

Tüm ekler için iyi belgeler resmi web sitelerindedir .

Ve aşağıda en popüler ve basit olanlarını ele alacağız.

Konsol Ekleyicisi

En basit apenderConsoleApender . Tahmin edebileceğiniz gibi, mesajlarını konsola yazmakla yetiniyor. Bizim için birkaç ilginç parametresi var:

Öznitellikler
1 isim Ekleyen adı
2 filtre Bazı mesajları filtrelemenize izin verir
3 düzen Çıktı alındığında mesajların biçimlendirmesini belirtir.
4 hedef Nereye yazılacağını belirtir: SYTEM_OUTveyaSYSTEM_ERR

Yapılandırmak çok kolaydır:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
    <Console name="STDOUT" target="SYSTEM_OUT">
    <PatternLayout pattern="%m%n"/>
    </Console>
</Appenders>
  <Loggers>
    <Root level="error">
    <AppenderRef ref="STDOUT"/>
    </Root>
</Loggers>
</Configuration>

Dosya Ekleyici

En kullanışlı apenderFileAppender . ConsoleAppenderMesajlarını bir dosyaya yazmasının aksine . Bu, uygulamanız sunucuda bir yerde çalışırken çok kullanışlıdır. Birçok parametreye sahiptir, çünkü farklı işletim sistemlerinde dosya yazabilmelidir.

Ancak sadece en popülerlerini ele alacağız.

1 isim Ekleyenin adını belirtir
2 filtre Bazı mesajları filtrelemenize izin verir
3 düzen Çıktı alındığında mesajların biçimlendirmesini belirtir.
4 dosya adı Mesajların yazılacağı dosyanın adını belirtir
5 eklemek Eğer true, o zaman mesajlar eski günlüğe eklenir, eğer false- günlük dosyası uygulama her başlatıldığında yeniden oluşturulur.
6 tamponBoyutu Arabellek boyutunu bayt cinsinden ayarlar
7 hemenFlush Eğer true, o zaman her mesaj aslında hemen diske yazılır (arabellek olmadan). Günlük yavaş çalışmaya başlar, ancak bu, program çöktüğünde sizi veri kaybetmekten kurtarır.

Dosyalarla nasıl iyi çalışılacağını zaten biliyorsunuz, dolayısıyla bu ayarlar sizin için yeni bir şey değil. Böyle bir günlükçüyü yapılandırmak, bir konsol günlükçüsünden bile daha kolaydır:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
    <File name="MyFile" fileName="logs/app.log">
    <PatternLayout>
        <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
    </PatternLayout>
    </File>
</Appenders>
<Loggers>
    <Root level="error">
    <AppenderRef ref="MyFile"/>
    </Root>
</Loggers>
</Configuration>

RollingFileAppender

En popüler apenderRollingFileAppender . Bunun aksine FileAppender, günlüğü birçok küçük dosyaya bölmenize olanak tanır. Bu, büyük günlükler için çok önemlidir. Ayrıca yeni dosyalar yazılmaya başladıktan sonra eski dosyalarla ne yapılacağına dair kurallar belirlemenizi sağlar.

Ve bu apender'ın neredeyse yüz farklı ayarı var. Bağlantıda onlar hakkında daha fazla bilgi edinebilirsiniz .

Bu ekleyicinin en popüler özelliklerini göz önünde bulundurun:

Öznitellikler
1 isim Ekleyenin adını belirtir
2 filtre Bazı mesajları filtrelemenize izin verir
3 düzen Çıktı alındığında mesajların biçimlendirmesini belirtir.
4 dosya adı Mesajların yazılacağı dosyanın adını belirtir
5 dosyaPattern Artık yazılmayan arşiv dosyaları için bir adlandırma modeli belirtir.
6 politika Dosyanın üzerine yazılmaya başlaması gereken durumu belirtir
7 strateji Eski dosyalarla ne yapılacağını açıklar: arşiv, kaç gün süreyle saklanacağı, vb.

İşte iyi bir örnek:

<Configuration status="warn" name="MyApp" packages="">
  <Appenders>
    <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}-%i.log.gz">
    <PatternLayout>
        <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
    </PatternLayout>
    <Policies>
        <TimeBasedTriggeringPolicy />
        <SizeBasedTriggeringPolicy size="250 MB"/>
    </Policies>
    </RollingFile>
  </Appenders>
  <Loggers>
    <Root level="error">
    <AppenderRef ref="RollingFile"/>
    </Root>
  </Loggers>
</Configuration>

Parametre, filePatterneski günlüklerin arşivleri için bir şablon belirtir. Ayrıca iki tane vardır, tetiklendiğinde yeni bir dosya yazılacaktır:

  • TimeBasedTriggeringPolicy– yeni bir gün başlarsa çalışır (mevcut tarih değişir)
  • SizeBasedTriggeringPolicy– dosya boyutu 250 MB'a ulaşırsa çalışacaktır
Yorumlar
  • Popüler
  • Yeni
  • Eskimiş
Yorum bırakmak için giriş yapmalısınız
Bu sayfada henüz yorum yok