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 -