Loglama ve Log4J?

Loglama Nedir? Loglama bir sistemin hareketlerini kaydeden bir yapıdır. Özellikle sistem yöneticileri ve hata gideren kullanıcılar ve hatta geliştiriciler için bir vazgeçilmezdir. Bir projede karşılaşılan hataları, akışları, performans sıkıntılarını ve son kullanıcının yaptğı işlemleri izleyerek, bunları anlık olarak yakalayıp düzeltmek için kullanılır. Logların anlamlı ve faydalı olabilmesi için ilk olarak kod içerisinde anlaşılır loglar yazılmalıdır.

Log4j nedir ?

Log4j Apache Software Foundation ın geliştirmiş olduğu bir loglama kütüphanesidir. (logging framework). Log4j kullanmak için log4j.jar dosyasında ve log4j tanımlarının yapıldığı properties dosyasına ihtiyaç bulunmaktadır. Bu properties dosyası standart olarak log4j.properties  yada log4j.xml dosyaları olabilir. Log4j java uygulamalarında kullanabileceğimiz java kütüphanesi iken log4php (PHP loglama), log4net (.NET loglama ), log4cxx (C++ loglama) versiyon ları bulunmaktadır.

Log4j loglamayı seviye bazlı yapar. Bu seviye log4j.properties dosyasından ayarlanabilir. Bir hata yada kriz anında bu seviye yükseltilebilir. Normal bir durumda seviye azaltılabilir. O zaman daha az log yazar ve sistem kaynaklarını da minimum seviyede kullanır. Log4j 1.2.14 versiyonu ile ek olarak trace log level de eklenmiştir.

Şekilde de görüldüğü gibi seviye merkeze doğru geldikçe loglama kapsamı azalır.

Örnek bir log4j.properties dosyası aşağıdaki gibidir.

# logger options: ALL -> DEBUG -> INFO -> WARN -> ERROR -> FATAL -> OFF
# Root logger option
log4j.rootLogger=DEBUG, stdout
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

rootLogger ALL ayarlaması ile tüm loglar seviyeye bakmaksızın hepsi bir anda açılabilir, ya da OFF ayarlaması ile kodlarda başka herhangi bir ayar yapmaksızın hepsi bir anda tamamen kapatılabilir.

Örnek bir log4j uygulaması :

import org.apache.log4j.Logger;
public class Log4jLevelTest {
private static final Logger logger = Logger.getLogger(Log4jLevelTest.class);
public static void main(String[] args) {
logger.fatal("fatal log message");
logger.error("error log message");
logger.warn("warn log message");
logger.info("info log message");
logger.debug("debug log message");
logger.trace("trace log message");
}
}

Diğer Faydaları:

Kod içerisinde bulunan System.out.println leri kaldırmak için kodda düzenleme yapmak gerekir. Sysout sistem kaynaklarını kullanarak sistem log dosyasına yazar ve  her yazma işlemi sırasında standart I/O yapar. log4j kadar performanslı değildir. İstenildiği zaman kapatılamaz.

Log4j ile loglama bir anda tamamen kapatılabilir yada seviyesiyle bir anda değiştirilebilir.

Örnek Uygulama

No Comments

Bir Cevap Yazın