Loglama son kullanıcılar ve sistem yöneticileri için, uygulamanın devamlılığı açısından çok önemlidir. Herhangi bir projede karşılaşılan hataları, performans sıkıntılarını ve bugları anlık olarak yakalayıp düzeltmek için kullanılır.
Log4j Apache' nin
geliştirmiş olduğu bir loglama frameworküdür. Log4j kullanabilmek
için log4j.jar ve log4j.properties config dosyasını indirip projemize dahil etmeliyiz.
Log4j ile farklı seviyelerde loglama yapabiliriz.
Şekilde de görüldüğü gibi merkeze doğru logun kapsama alanı azalır.
Bu dosya log4j nin config dosyasıdır.
# logger options: ALL -> DEBUG -> INFO -> WARN -> ERROR -> FATAL -> OFF
# Root logger option
log4j.rootLogger=INFO, file, stdout
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=log/loging.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
# 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
Bu dosyayı java projesinde src
dizininin altına koymalıyız.
Şu anda bu dosya log mesajlarını sistem konsoluna ve log/loging.log isimli bir dosyaya yazmak üzere ayarlanmıştır.
Bu dosyanın boyutu 1 MB ulaştığında otomatik olarak 2. log dosyası açılacaktır.
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
satırı ile tarih, saat, logun oluştuğu satır gibi bilgilerin de loga eklenmesini sağlamaktadır.
log4j.rootLogger
ayarı OFF yapılarak loglama iptal edilebilir ya da ALL yapılarak tüm tüm seviyelerdeki loglar izlenebilir.
Basit bir java programı ve log4j:
package com.gceylan.log4jexample;
import org.apache.log4j.Logger;
public class Log4jExample {
private static final Logger logger = Logger.getLogger(Log4jExample.class);
public static void main(String[] args) {
logger.info("STARTED!");
logger.trace("Trace");
logger.debug("Debug");
logger.info("Info");
logger.warn("Warn");
logger.error("Error");
logger.fatal("Fatal");
logger.info("FINISHED!");
}
}
Diğer Faydaları: Örneğin, kod çerisinde bulunan system.out.println
leri kaldırmak için koda müdehale etmek gerekir.
Sysout
sistem kaynaklarını kullanarak sistem log dosyasına yazar. Her yazım işleminde I/O
yapar. log4j kadar performanslı değildir. İstenildiği zaman kapatılamaz.