log4j Nedir? Nasıl kullanılır?

Standart
Bilgiyi paylaşarak çoğalt !Tweet about this on TwitterShare on LinkedIn0Share on Google+0Share on Facebook0Pin on Pinterest0

log4j, Java’da yazılmış, Apache Yazılım Lisansı altında paylaşılan; hızlı, güvenilir ve esnek bir loglama framework’üdür. Java’da yazılmasının yanı sıra C, C++, C#, Perl, Python, Ruby, and Eiffel dillerine de taşınmıştır.

Runtime sırasında, dış(external) yapılandırmaların yapılmasını kolayca sağlar. Veritabanı,dosya,console, UNIX Syslog gibi büyük bir yelpazeye, loglama bilgilerinin işlenme sürecini,  öncelik levelleri ve offer mekanizmaları olarak gösterir.

log4j üç adet temel bileşenden oluşur:

  • loggers: loglama bilgilerini yakalamadan sorumlu
  • appenders: loglama bilgilerini veritabanı,dosya,console vb. gibi tercih edilen interfacelerde görüntülenmesini sorumlu
  • layouts: farklı şekillerde loglama formatını oluşturmada sorumludur.

log4j özellikleri

  • Güvenli Thread kullanımı
  • Hız için optimize edilmiş
  • Her logger için çoklu çıktı özelliğini destekler.
  • Java Exception’ları kontrol altına alınabilir.
  • ALL, TRACE, DEBUG, INFO, WARN, ERROR ve FATAL gibi çoklu loglama leveli kullanır.

Loglamanın artıları ve eksileri

Yazılım geliştirmenin önemli bileşenlerinden biri de loglamadır. İyi yazılmış bir loglama kodu, hızlı hata ayıklama, kolay bakım ve uygulamanın runtime bilgilerinin yapısal depolamasını sağlar.

Loglamanın aynı zamanda sakıncaları da vardır. Uygulamayı yavaşlatabilir. Eğer çok fazla gereksiz loglama olmuş ise, bu durum scrolling blindness denen probleme neden olabilir. Bu gibi endişeleri hafifletmek için log4j, hızlı, geliştirilebilir ve güvenilir olarak tasarlandı.

Log4j “hello world!” örneği

Eclipse’i açıp bir tane Maven projesi oluşturun ve adına HelloLogging ismini verelim. Projemize log4j dependencies‘ini ekleyelim:

Eğer Maven kullanıcısı değilseniz, log4f anasayfasını ziyaret edip jar dosyasını indirip, manuel olarak proje kütüphane pathine eklemelisiniz.

src/main/resources altına log4j.properties adında bir file oluşturun ve içerisine şunları yerleştirin:

Kısaca sekiz ve on altıncı satırlarda bulunan ConversionPattern‘lerden bahsedecek olursak:

  1. %d{yyyy-MM-dd HH:mm:ss} = Date ve time formatı. SimpleDateFormat’a ait.
  2. %-5p = loglama önceliği. Örneğin DEBUG veya ERROR. -5 isteğe bağlıdır.
  3. %c{1} = getLogger() ile ayarladığımız loglama adı.
  4. %L = loglama isteği yapılan yerin satır numarası.
  5. %m%n = loga mesaj yaz ve alt satıra geç.

Log mesaj örnekleri:

Şimdi mesajı loglamak için, ilk önce final static ile bir logger oluşturalım:

sonra mesajları farklı önceliklerde (debug, info, warn, error ve fatal) logllayalım. Normalde debug ve error kullanılır. Bizim örneğimizde logger debug olarak ayarlandı (log4j.properties dosyasında ikinci satır). Kullanımı aşağıdadır:

Çıktısı

Şimdi de logger önceliğini error olarak değiştirelim.

tekrar HelloExample ‘ı çalıştıralım ve aşağıdaki çıktı görelim:

Peki, bu tarz mesajlar yerine Exception loglamak isteseydik ne olacaktı? Projeye HelloExample2 adında bir sınıf ekleyelim ve içine şunları ekleyelim:

çıktısı şu şekilde olacak

Sonuç olarak örneklerde de görüldüğü üzere, loglamak, ileride geriye dönüp bakıldığında veya uygulamanın çalışma zamanında içerisinde neler olup bitiyor diye anlamak istiyorsak bize kolaylık sağlıyor ve log4j kullanmamızın sebebi ise güvenilir, kolay bakım sağlaması ve esnek olmasıdır.