Örnek

Basit Bir Formatter Örneği

Eğer herhangi bir formatter verilmezse Console'a log aşağıdaki formatta atılır :
Nis 27, 2013 5:20:31 PM com.fibiler.log.LogHelloWorldToFileTestApp main
INFO: Hello World
Bu format değiştirilebilir. Aşağıda bir formetter örneği görülmektedir :
package com.fibiler.log; 
import java.io.*; 
import java.text.*; 
import java.util.*; 
import java.util.logging.*; 
public class LogFormatter extends java.util.logging.Formatter { 
    @Override 
    public String format(LogRecord record) { 
        SimpleDateFormat dateFormat=new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
        String formatDate=dateFormat.format(new Date()); 
         
        StringBuilder sb = new StringBuilder();         
        sb.append(formatDate).append(" - "). 
            append(formatMessage(record)). 
            append(System.getProperty("line.separator")); 
         
        if (record.getThrown() != null) { 
            try { 
                StringWriter sw = new StringWriter(); 
                PrintWriter pw = new PrintWriter(sw); 
                record.getThrown().printStackTrace(pw); 
                pw.close(); 
                sb.append(sw.toString()); 
            } catch (Exception ex) { 
                ex.printStackTrace(); 
            } 
        } 
        return sb.toString(); 
    } 
} 
Bu formatter ile tarih formatı dd.MM.yyyy HH:mm:ss şeklinde yapılmaktadır. Önce tarih yazılmakta ardından mesajın varsayılan biçimlendirmes yapılmakta ve yeni satır karakteri eklenmektedir. Örneğin üç kere peşpeşe HelloWorld yapıldığında eski sistem aşağıdaki gibi basacaktır :
Nis 27, 2013 5:24:44 PM com.fibiler.log.LogHelloWorldToFileTestApp main
INFO: Hello World
Nis 27, 2013 5:24:44 PM com.fibiler.log.LogHelloWorldToFileTestApp main
INFO: Hello World2
Nis 27, 2013 5:24:44 PM com.fibiler.log.LogHelloWorldToFileTestApp main
INFO: Hello World3
Yeni yapılan LogFormatter aşağıdaki örnekte görüldüğü gibi set edilebilir :
package com.fibiler.log; 
import java.io.*; 
import java.util.logging.*; 
public class LogHelloWorldToFileTestApp  
{ 
    public static void main( String[] args ) 
throws SecurityException, IOException
    { 
        Logger logger = Logger.
 getLogger("com.fibiler.log.LogHelloWorldTestApp");
        FileHandler fileHandler=new FileHandler("C:/Log",true); 
        logger.addHandler(fileHandler); 
         
        ConsoleHandler consoleHandler=new ConsoleHandler(); 
        consoleHandler.setFormatter(new LogFormatter()); 
        logger.setUseParentHandlers(false); 
        logger.addHandler(consoleHandler); 
        logger.log(Level.INFO, "Hello World"); 
         
        logger.log(Level.INFO, "Hello World2"); 
         
        logger.log(Level.INFO, "Hello World3"); 
         
    } 
}
Yeni bir ConsoleHandler yaratılıp formatter olarak daha önce yarattığımız formatter verilmektedir. setUseParentHandlers ile üst sınıfın console handler'ı devre dışı bırakılmıştır. Yukarıdaki örnek çalıştırıldığında ise aşağıdaki gibi bir ekran görüntüsü olacaktır :
27.04.2013 17:25:44 - Hello World
27.04.2013 17:25:44 - Hello World2
27.04.2013 17:25:44 - Hello World3
Örneğin Level bilgisi aşağıdaki gibi bir kod değişikliğiyle eklenebilir :
sb.append(formatDate).append(" - ").
append(record.getLevel()).append(" - ").
append(formatMessage(record)).
append(System.getProperty("line.separator"));
Bu ekleme yaptıktan sonra aşağıdaki gibi görülecektir:
27.04.2013 17:28:51 - INFO - Hello World
27.04.2013 17:28:51 - INFO - Hello World2
27.04.2013 17:28:51 - INFO - Hello World3
zafer.teker , 21.06.2026

Bu Sayfayı Paylaş:

Fibiler Üyelerinin Yorumları


Tüm üyeler içeriklere yorum ekleyerek katkıda bulunabilir : Yorum Gir



Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir