7 Ağustos 2017 Pazartesi

Loglama ve log4j

Loglama kavramı nedir?

 Bir sistemin çalışma zamanında durumunu saklama durumuna denir. Sistemde yaşanılan hatalar yada yapılan işleri incelemede kullanılabilir. Logların kullanışlı olması anlaşır olmasına ve loglanma görünümüne bağlıdır. Anlaşılabilir bir log debug, bakım ve geçmişi kontrol etme gibi konularda sistem yöneticisi veya programcıya yardımcı olur.


Log4j nedir?

Apache Yazılım Lisansı altında dağıtılan, Java ile yazılmış hızlı, güvenilir ve esnek bir API'dir. Java'da yazılmasına rağmen C, C++, Python, Perl gibi popüler dillerde de kullanılır.


Yapılandırma

log4j log4j.properties dosyasından kolayca yapılandırılabilir. Bu yapılandırma dosyası şu şekildedir.


# 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=C:\\ProjectHome\logging.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-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{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

Buna ek olarak istenildiği durumda xml formatında da bu ayarlamalar yapılabilir.

Hadi buradaki bazı satırları açıklığa kavuşturalım.

rootLogger satırında INFO log seviyesini belirtir. file ve stdout ise log dosyalarının nereye yazdırılacağını belirtir ki örneğimizde bu bir dosya(file) ve standart çıktı(stdout).

appender komutu ile logun ekleneceği seçeneği belirtir. File ekiyle çıktının konumunu belirtiriz. İstersek bir çevresel değişken tanımlayıp burada kullanabiliriz. ConversionPattern ile dosyamıza çıktımızın hangi düzende basılacağını ayarlıyoruz.

Devamında ise benzer komutları standart çıktı için ayarlıyoruz.

Log seviyeleri şu şekildedir.
ALL > DEBUG > INFO > WARN > ERROR > FATAL

Burada büyükten küçüğe doğru gittikçe kapsam azalır. Loglama yaparken seviyelere dikkat etmek önemlidir. Kullanıcının görmemesi veya görmesine gerek olmayan logları onlara göstermemek gerekir. Sistemi incelemek durumunda log modu değiştirilebilir ve o mod ve altında kapsadığı modlarda basılan loglar incelenebilir. 



import org.apache.log4j.Logger;

public class log4jDeneme {

  final static Logger logger = Logger.getLogger(log4jDeneme.class);

  public static void main(String[] args) {
        logger.debug("debug log message");
        logger.info("info log message");
        logger.warn("warn log message");
        logger.error("error log message");
 
 }

}

log4j.properties dosyasındaki ayarlarımızdaki info seviyesine göre kodumuzu çalıştırdığımızı düşünürsek, info,warn ve error logları basılırken debug basılmayacak. Eğer debug seviyesine geçersek bu da basılacak. Debug moda geçmek için log4j.properties dosyasındaki info yu debug yapmak yeterli olacak.

Temel seviyede bahsedeceklerim bu kadar. Yardımcı olması dileğiyle.
İyi günler.

Hiç yorum yok:

Yorum Gönder

LibreOffice, Libreoffice Online Derleme ve Yama Gönderme Süreci

    Libreoffice bir masaüstü ofis paketidir. Yıllar boyunca farklı adlarda geliştirilmiş şu an ise  Libreoffice adıyla devam etmektedir. Lib...