Учебники

Spring Boot — Logging

Spring Boot использует протоколирование Apache Commons для всех внутренних журналов. Стандартные конфигурации Spring Boot обеспечивают поддержку использования Java Util Logging, Log4j2 и Logback. Используя их, мы можем настроить ведение журнала консоли, а также ведение журнала файлов.

Если вы используете Spring Boot Starters, Logback обеспечит хорошую поддержку для регистрации. Кроме того, Logback также обеспечивает хорошую поддержку Common Logging, Util Logging, Log4J и SLF4J.

Формат журнала

Формат Spring Boot Log по умолчанию показан на снимке экрана ниже.

Spring Boot Log Format

которая дает вам следующую информацию —

  • Дата и время, которые дают дату и время журнала

  • Уровень журнала показывает INFO, ERROR или WARN

  • Идентификатор процесса

  • — который является разделителем

  • Имя потока заключено в квадратные скобки []

  • Имя регистратора, которое показывает имя класса Source

  • Лог-сообщение

Дата и время, которые дают дату и время журнала

Уровень журнала показывает INFO, ERROR или WARN

Идентификатор процесса

— который является разделителем

Имя потока заключено в квадратные скобки []

Имя регистратора, которое показывает имя класса Source

Лог-сообщение

Вывод журнала консоли

Сообщения журнала по умолчанию будут распечатаны в окне консоли. По умолчанию сообщения журнала «INFO», «ERROR» и «WARN» будут напечатаны в файле журнала.

Если вам нужно включить журнал уровня отладки, добавьте флаг отладки при запуске приложения с помощью команды, показанной ниже —

java –jar demo.jar --debug

Вы также можете добавить режим отладки в файл application.properties, как показано здесь:

debug = true

Вывод файла журнала

По умолчанию все журналы печатаются в окне консоли, а не в файлах. Если вы хотите распечатать журналы в файле, вам нужно установить свойство logging.file или logging.path в файле application.properties.

Вы можете указать путь к файлу журнала, используя свойство, показанное ниже. Обратите внимание, что имя файла журнала — spring.log.

logging.path = /var/tmp/

Вы можете указать собственное имя файла журнала, используя свойство, показанное ниже —

logging.file = /var/tmp/mylog.log

Обратите внимание — файлы будут вращаться автоматически после достижения размера 10 МБ.

Уровни журнала

Spring Boot поддерживает все уровни ведения журнала, такие как «TRACE», «DEBUG», «INFO», «WARN», «ERROR», «FATAL», «OFF». Вы можете определить Root logger в файле application.properties, как показано ниже —

logging.level.root = WARN

Примечание. Logback не поддерживает журнал уровня «FATAL». Он отображается в журнале уровня «ОШИБКА».

Настроить Logback

Logback поддерживает конфигурацию на основе XML для обработки конфигураций Spring Boot Log. Детали конфигурации ведения журнала настраиваются в файле logback.xml . Файл logback.xml должен быть размещен под classpath.

Вы можете настроить журнал уровня ROOT в файле Logback.xml, используя приведенный ниже код —

<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
   <root level = "INFO">
   </root>
</configuration>

Вы можете настроить консольный appender в файле Logback.xml, указанном ниже.

<?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>

Вы можете настроить файл appender в файле Logback.xml, используя приведенный ниже код. Обратите внимание, что вам нужно указать путь к файлу журнала, который находится внутри файла appender.

<?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>

Вы можете определить шаблон журнала в файле logback.xml, используя приведенный ниже код. Вы также можете определить набор поддерживаемых шаблонов журналов в консоли или в приложении журнала файлов, используя код, приведенный ниже —

<pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>

Код для полного файла logback.xml приведен ниже. Вы должны поместить это в путь класса.

<?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>

Приведенный ниже код показывает, как добавить регистратор slf4j в файл основного класса Spring Boot.

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);
   }
}

Вывод, который вы видите в окне консоли, показан здесь —

Окно консоли Logger

Вывод, который вы можете увидеть в файле журнала, показан здесь —

Выход журнала