Java Günlüğü

Bu eğitimde, örnekler yardımıyla Java Günlüğü ve çeşitli bileşenleri hakkında bilgi edineceğiz.

Java, günlüğe kaydetme işlemi aracılığıyla günlük mesajları ve dosyaları oluşturmamıza ve yakalamamıza olanak tanır.

Java'da günlük kaydı, çerçeveler ve API'ler gerektirir. Java'nın java.util.loggingpakette yerleşik bir günlükleme çerçevesi vardır .

Log4j, Logback ve daha fazlası gibi üçüncü taraf çerçevelerini günlük kaydı amacıyla da kullanabiliriz.

Java Günlük Bileşenleri

Aşağıdaki şekil, Java Logging API'nin ( java.util.logging) temel bileşenlerini ve kontrol akışını temsil etmektedir .

Java Günlüğü

1. Kaydedici

LoggerSınıf günlüğü için yöntemler sağlar. Sınıftan nesneleri başlatabilir Loggerve günlükleme amaçları için yöntemlerini çağırabiliriz.

Bir örnek alalım.

 Logger logger = Logger.getLogger("newLoggerName"); 

getLogger()Yöntemi Loggersınıfına bulmak veya yeni oluşturmak için kullanılır Logger. Dize argümanı, kaydedicinin adını tanımlar.

Burada, bu yeni bir Loggernesne yaratır veya Loggeraynı isimde var olanı döndürür .

LoggerKullanarak geçerli sınıftan sonra a tanımlamak için bir kuraldır class.getName().

 Logger logger = Logger.getLogger(MyClass.class.getName()); 

Not: Bu yöntem NullPointerException, aktarılan ad ise atar null.

Her Loggerbirinin günlük mesajının önemini belirleyen bir düzeyi vardır. 7 temel günlük seviyesi vardır:

Günlük Düzeyi (azalan sırada) Kullanım
ŞİDDETLİ ciddi başarısızlık
UYARI uyarı mesajı, olası bir sorun
BİLGİ genel çalışma zamanı bilgisi
YAPILANDIR yapılandırma bilgileri
İNCE genel geliştirici bilgileri (izleme mesajları)
İNCE ayrıntılı geliştirici bilgileri (izleme mesajları)
EN GÜZEL son derece ayrıntılı geliştirici bilgileri (izleme mesajları)
KAPALI tüm seviyeler için günlük kaydını kapat (hiçbir şey yakalama)
HERŞEY tüm seviyeler için günlük kaydını aç (her şeyi yakala)

Her günlük düzeyinin, iki özel günlük düzeyi OFFve ALL.

Mesajı günlüğe kaydetme

Varsayılan olarak, en üstteki üç günlük düzeyi her zaman günlüğe kaydedilir. Farklı bir seviye belirlemek için aşağıdaki kodu kullanabiliriz:

 logger.setLevel(Level.LogLevel); // example logger.setLevel(Level.FINE); 

Bu örnekte, yalnızca üzerindeki seviye FINEve seviyeler günlüğe kaydedilecek şekilde ayarlanmıştır. Diğer tüm günlük mesajları bırakılır.

Şimdi bir mesaj kaydetmek için log()yöntemi kullanıyoruz.

 logger.log(Level.LogLevel, "log message"); // example logger.log(Level.INFO, "This is INFO log level message"); 

İstenilen seviyelerde günlük kaydı için kısa yöntemler vardır.

 logger.info( "This is INFO log level message"); logger.warning( "This is WARNING log level message"); 

Ayarlanan günlük düzeyini geçen tüm günlük istekleri daha sonra LogRecord'a iletilir .

Not: Bir günlükçünün seviyesi olarak ayarlanmışsa null, seviyesi üstünden miras alınır ve bu şekilde ağaçta devam eder.

2. Filtreler

Bir filtre (mevcutsa), LogRecord'un iletilip iletilmeyeceğini belirler . Adından da anlaşılacağı gibi, günlük mesajlarını belirli kriterlere göre filtreler.

Bir LogRecord , belirtilen kriterleri geçerse yalnızca günlükçiden günlük işleyicisine ve günlük işleyicisinden harici sistemlere geçirilir.

 // set a filter logger.setFilter(filter); // get a filter Filter filter = logger.getFilter(); 

3. İşleyiciler (Ekler)

Günlük işleyici veya ekleyiciler LogRecord'u alır ve çeşitli hedeflere aktarır.

Java SE, 5 yerleşik işleyici sağlar:

İşleyiciler Kullanım
StreamHandler bir OutputStream
ConsoleHandler konsola yazar
FileHandler dosyaya yazar
SocketHandler uzak TCP bağlantı noktalarına yazar
MemoryHandler hafızaya yazar

Bir işleyici, LogRecord'u harici sistemlere iletilip iletilemeyeceğini yeniden belirlemek için bir filtreye geçirebilir.

Yeni bir işleyici eklemek için aşağıdaki kodu kullanıyoruz:

 logger.addHandler(handler); // example Handler handler = new ConsoleHandler(); logger.addHandler(handler); 

Bir işleyiciyi kaldırmak için aşağıdaki kodu kullanırız:

 logger.removeHandler(handler); // example Handler handler = new ConsoleHandler(); logger.addHandler(handler); logger.removeHandler(handler); 

Bir kaydedicinin birden çok işleyicisi olabilir. Tüm işleyicileri almak için aşağıdaki kodu kullanıyoruz:

 Handler() handlers = logger.getHandlers(); 

4. Biçimlendiriciler

Bir işleyici , LogRecord nesnesini harici sistemlere aktarmadan önce bir dizeye formatlamak için bir Biçimlendirici de kullanabilir .

Java SE'nin iki yerleşik Biçimlendiricisi vardır :

Biçimlendiriciler Kullanım
SimpleFormatter LogRecord'u dizeye formatlar
XMLFormatter formatları LogRecord XML formuna

Bir işleyiciyi biçimlendirmek için aşağıdaki kodu kullanabiliriz:

 // formats to string form handler.setFormatter(new SimpleFormatter()); // formats to XML form handler.setFormatter(new XMLFormatter()); 

LogManager

LogManager nesne küresel günlüğü bilgilerin kaydını tutar. Günlük kaydı yapılandırmasını ve kaydedici örneklerini okur ve korur.

Günlük yöneticisi bir singleton'dur, yani bunun yalnızca bir örneğinin başlatıldığı anlamına gelir.

Günlük yöneticisi örneğini elde etmek için aşağıdaki kodu kullanıyoruz:

 LogManager manager = new LogManager(); 

Günlük Tutmanın Avantajları

Java'da oturum açmanın avantajlarından bazıları şunlardır.

  • programın akışının izlenmesine yardımcı olur
  • meydana gelebilecek herhangi bir hatanın yakalanmasına yardımcı olur
  • sorun teşhisi ve hata ayıklama için destek sağlar

Ilginç makaleler...