Merhaba arkadaşlar, bundan önceki yazımda loglamaya giriş yapmıştık ve dosyaya log atmıştık. Bu yazımda dosyaya loglamaya devam edeceğiz. Şimdi FileAppender konfigürasyon özelliklerine bakalım.
Ayar | Açıklama |
immediateFlush
|
Default olarak true değerini alır. Bu da her ekleme işleminden sonra dosyayı temizler. |
encoding | Herhangi bir karakter kodlamasını kullanmak mümkündür. Default olarak platforma özgü kodlama şemasıdır. |
threshold | Bu appender için eşik seviyesidir. |
Filename | Log dosyasının adıdır. |
fileAppend | Default olarak true değerini alır. Yani loğları dosyanın sonuna ekler. |
bufferedIO | Default olarak false değerini alır. Bu özellik buffered olarak yazmanın etkin olup olmadığına bakar. |
bufferSize | Arabelleğe alınmış I/O etkinse arabellek boyutunu belirtir. Default olarak 8KB olarak belirlenmiştir. |
maxFileSize | Default olarak 10MB ayarlanmıştır. |
maxBackupIndex | Default olarak 1 ayarlanmıştır. Oluşturulacak yedek dosya sayısını gösterir. |
Şimdi örnek olarak bir tane properties dosyası hazırlayalım ve yukardaki özellikleri kullanalım.
Log4j.properties
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#root logger tanimlaniyor. log4j.rootLogger = DEBUG, FILE #File Appender'i tanimla. log4j.appender.FILE=org.apache.log4j.RollingFileAppender #Olusmasi istenen dosyanin yolu ve ismi belirtiliyor. log4j.appender.FILE.File=log\\log.out #Her ekleme isleminden sonra dosyayayi temizler. default true log4j.appender.FILE.ImmediateFlush=true log4j.appender.FILE.Threshold=debug #Dosyanin uzerine yazmasini saglar. log4j.appender.FILE.Append=true #Dosyanin max boyutunu belirtir. log4j.appender.FILE.MaxFileSize=1KB #Dosyanin yedek dosya sayisini belirtir. log4j.appender.FILE.MaxBackupIndex=3 # File Appender'in layoutunu(duzenini) belirtir. log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.conversionPattern=%m%n |
Şimdi bu hazırladığımı properties dosyamızı bir örnek üzerinde uygulayalım ve çıktıya bakalım.
Test.java
1 2 3 4 5 6 7 8 9 10 11 |
public class Test { public static void main(String[] args) { Logger logger = Logger.getLogger(Test.class); for(int i=0;i<1000;i++) { logger.info("---------------------------"); logger.debug("debug running"+i); logger.error("error running"); logger.fatal("fatal running"); } } } |
Log4j.properties dosyası olarak yukarıdaki dosyamızı ekleyelim.
Log4j.properties
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#root logger tanimlaniyor. log4j.rootLogger = DEBUG, FILE #File Appender'i tanimla. log4j.appender.FILE=org.apache.log4j.RollingFileAppender #Olusmasi istenen dosyanin yolu ve ismi belirtiliyor. log4j.appender.FILE.File=log\\log.out #Her ekleme isleminden sonra dosyayayi temizler. default true log4j.appender.FILE.ImmediateFlush=true log4j.appender.FILE.Threshold=debug #Dosyanin uzerine yazmasini saglar. log4j.appender.FILE.Append=true #Dosyanin max boyutunu belirtir. log4j.appender.FILE.MaxFileSize=1KB #Dosyanin yedek dosya sayisini belirtir. log4j.appender.FILE.MaxBackupIndex=3 # File Appender'in layoutunu(duzenini) belirtir. log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.conversionPattern=%m%n |
Şimdi projemizi run edelim ve çıktıyı gözlemleyelim:
MaxBackupIndex değeri 3 olduğu için 3 tane yedek aldı. Burada diğer önemli bir konu ise MaxFileSizedır. Log.out dosyasının boyutu MaxFİleSize değerinden fazla olduğunda yedeğini alıyor. Burada eskiden yeni sıralaması 3-2-1-out şeklinde gidiyor. Şimdi çıktıları ve dosya isimlerine tarihi de ekleyerek günlük olarak log tutalım.
Log bilgilerini dosyalara günlük olarak yazmak için, FileAppender sınıfını genişleten ve tüm özelliklerini kullanan org.apache.log4j.DailyRollingFileAppender sınıfını kullanmamız gerekir. Yukarıdaki properties dosyasının içeriğine ek olarak aşağıdaki parametre de eklenir:
Ayar | Açıklama |
DatePattern
|
Bu, dosyanın ne zaman döndürüleceğini ve izlenecek adlandırma kuralını gösterir. Default olarak, devir işlemi her gün gece yarısı yapılır. |
DatePattern, aşağıdaki kalıplardan birini kullanarak devir işlemini kontrol eder:
Ayar | Açıklama |
‘.’ yyyy-MM | Her ayın sonunda ve bir sonraki ayın başında devir yapar. |
‘.’ yyyy-MM-dd | Her gün gece yarısı devir yapar. Bu Default değeridir. |
‘.’ yyyy-MM-dd-a | Her günün gece yarısı ve öğlen devir eder. |
‘.’ yyyy-MM-dd-HH | Her saatin üstüne devir eder. |
‘.’ yyyy-MM-dd-HH-mm | Her dakika devir eder. |
‘.’ yyyy-ww | Yerel ayara bağlı olarak her haftanın ilk gününde devir eder. |
Örnek olarak:
1 |
log4j.appender.FILE.DatePattern='.' yyyy-MM-dd-a |
Şimdi çıktımıza tarihimizi ve diğer detayları ekleyelim. Örnek üzerinden daha iyi anlaşılacaktır.
Log4j.properties
1 2 3 4 5 6 7 8 9 10 11 12 13 |
log4j.rootLogger=DEBUG, stdout, file 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 log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.FILE.File=log\\log.out log4j.appender.file.MaxFileSize=5MB 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 |
Log4j yazılarını burada bitiriyorum. Diğer yazımlarımda görüşmek üzere.