Spring Boot - Günlük Kaydı
Spring Boot, tüm dahili günlükler için Apache Commons günlük kaydını kullanır. Spring Boot'un varsayılan yapılandırmaları Java Util Logging, Log4j2 ve Logback kullanımı için destek sağlar. Bunları kullanarak, konsol günlüğünü ve dosya günlüğünü yapılandırabiliriz.
Spring Boot Starters kullanıyorsanız, Logback, günlük kaydı için iyi bir destek sağlayacaktır. Ayrıca, Logback ayrıca Common Logging, Util Logging, Log4J ve SLF4J için iyi bir destek sağlar.
Günlük Formatı
Varsayılan Spring Boot Log formatı, aşağıda verilen ekran görüntüsünde gösterilmektedir.
bu size aşağıdaki bilgileri verir -
Date ve Time günlüğün tarihini ve saatini veren
Log level BİLGİ, HATA veya UYARI gösterir
Process ID
- bir ayırıcı olan
Thread name köşeli parantez [] içine alınır
Logger Name Kaynak sınıf adını gösterir
Günlük mesajı
Konsol Günlük Çıktısı
Varsayılan günlük mesajları konsol penceresine yazdırılacaktır. Varsayılan olarak, günlük dosyasına "BİLGİ", "HATA" ve "UYARI" günlük mesajları yazdırılacaktır.
Hata ayıklama düzeyi günlüğünü etkinleştirmeniz gerekiyorsa, aşağıda gösterilen komutu kullanarak uygulamanızı başlatırken hata ayıklama bayrağını ekleyin -
java –jar demo.jar --debug
Hata ayıklama modunu burada gösterildiği gibi application.properties dosyanıza da ekleyebilirsiniz -
debug = true
Dosya Günlük Çıkışı
Varsayılan olarak, tüm günlükler dosyalara değil konsol penceresinde yazdırılacaktır. Günlükleri bir dosyaya yazdırmak istiyorsanız, özelliği ayarlamanız gerekir.logging.file veya logging.path application.properties dosyasında.
Aşağıda gösterilen özelliği kullanarak günlük dosyası yolunu belirtebilirsiniz. Günlük dosyası adının spring.log olduğunu unutmayın.
logging.path = /var/tmp/
Aşağıda gösterilen özelliği kullanarak kendi günlük dosyası adını belirtebilirsiniz -
logging.file = /var/tmp/mylog.log
Note - dosyalar 10 MB boyutuna ulaştıktan sonra otomatik olarak dönecektir.
Günlük Seviyeleri
Spring Boot, "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "FATAL", "OFF" gibi tüm kaydedici seviyelerini destekler. Root logger'ı application.properties dosyasında aşağıda gösterildiği gibi tanımlayabilirsiniz -
logging.level.root = WARN
Note- Logback, "FATAL" seviyesinde logu desteklemez. "HATA" seviye günlüğüne eşlenir.
Logback'i Yapılandır
Logback, Spring Boot Log yapılandırmalarını işlemek için XML tabanlı yapılandırmayı destekler. Günlük yapılandırma ayrıntıları şurada yapılandırılır:logback.xmldosya. Logback.xml dosyası, sınıf yolu altına yerleştirilmelidir.
Aşağıda verilen kodu kullanarak Logback.xml dosyasında ROOT seviyesi günlüğünü yapılandırabilirsiniz -
<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
<root level = "INFO">
</root>
</configuration>
Konsol ekleyiciyi aşağıda verilen Logback.xml dosyasında yapılandırabilirsiniz.
<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
<appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender"></appender>
<root level = "INFO">
<appender-ref ref = "STDOUT"/>
</root>
</configuration>
Dosya ekleyiciyi Logback.xml dosyasında aşağıda verilen kodu kullanarak yapılandırabilirsiniz. Dosya ekleyicinin içinden Günlük dosyası yolunu belirtmeniz gerektiğini unutmayın.
<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
<appender name = "FILE" class = "ch.qos.logback.core.FileAppender">
<File>/var/tmp/mylog.log</File>
</appender>
<root level = "INFO">
<appender-ref ref = "FILE"/>
</root>
</configuration>
Günlük modelini şurada tanımlayabilirsiniz: logback.xmldosyası aşağıda verilen kodu kullanarak. Ayrıca, aşağıda verilen kodu kullanarak konsol veya dosya günlüğü ekleyici içindeki desteklenen günlük kalıpları kümesini tanımlayabilirsiniz -
<pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
Tam logback.xml dosyasının kodu aşağıda verilmiştir. Bunu sınıf yoluna yerleştirmelisiniz.
<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
<appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
</encoder>
</appender>
<appender name = "FILE" class = "ch.qos.logback.core.FileAppender">
<File>/var/tmp/mylog.log</File>
<encoder>
<pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
</encoder>
</appender>
<root level = "INFO">
<appender-ref ref = "FILE"/>
<appender-ref ref = "STDOUT"/>
</root>
</configuration>
Aşağıda verilen kod, Spring Boot ana sınıf dosyasına slf4j logger'ın nasıl ekleneceğini gösterir.
package com.tutorialspoint.demo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
private static final Logger logger = LoggerFactory.getLogger(DemoApplication.class);
public static void main(String[] args) {
logger.info("this is a info message");
logger.warn("this is a warn message");
logger.error("this is a error message");
SpringApplication.run(DemoApplication.class, args);
}
}
Konsol penceresinde görebileceğiniz çıktı burada gösterilmektedir -
Günlük dosyasında görebileceğiniz çıktı burada gösterilir -