Spring Boot по умолчанию использует SLF4J в качестве фасада журнала и интегрирует Logback в качестве реализации журнала. SLF4J (Simple Logging Facade for Java) — это общий уровень абстракции журналирования, который можно использовать в сочетании с различными платформами журналирования, такими как Logback, Log4j, Java Util Logging (JUL) и т. д. Logback — это быстрая, гибкая и мощная платформа ведения журналов, преемник Log4j.
Проект Spring Boot по умолчанию включает зависимости SLF4J и Logback. Если вам нужно настроить,Можно найти вpom.xml
Добавьте или измените зависимости в:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
Если вы хотите использовать Log4j2 в качестве реализации ведения журнала, вы можете исключить зависимость Logback и добавить зависимость Log4j2:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
<exclusions>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
Spring Bootпозвольте нам пройтиapplication.properties
илиapplication.yml
Файл приходит Конфигурациябревноуровень。
существоватьapplication.properties
середина Конфигурациябревноуровень:
# Глобальный бревно уровень
logging.level.root=INFO
# Укажите бревно уровень пакета
logging.level.com.example.demo=DEBUG
существоватьapplication.yml
середина Конфигурациябревноуровень:
logging:
level:
root: INFO
com.example.demo: DEBUG
Хотя весна Boot предоставляет конфигурацию Logback по умолчанию.,Но в практическом применении,Обычно нам нужно настроитьбревно Конфигурациядля удовлетворения конкретных потребностей。Мы можем сделать это, создавlogback-spring.xml
Файл приходит实现自定义Конфигурация。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="LOG_PATH" value="logs"/>
<property name="LOG_FILE" value="${LOG_PATH}/spring-boot-logger.log"/>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/spring-boot-logger.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
Асинхронный журнал:Чтобы улучшить производительность,Можно использовать Асинхронный журнал。
<appender name="ASYNC_FILE" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="FILE"/>
</appender>
Шардинг журнала:根据时间или文件大小进行Шардинг журнала。
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/spring-boot-logger.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxFileSize>10MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
Пользовательский формат журнала:Можно использоватьдругой格式化选项自定义бревновыход。
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
другойбревноуровень会对系统性能ибревно Размер файла влияет。Обычно рекомендуется установить его наDEBUG
,В производственной среде установлено значениеINFO
илиWARN
。
При записи журналов старайтесь использовать заполнители, чтобы избежать снижения производительности, вызванного конкатенацией строк.
// рекомендовать
logger.debug("User with id {} not found", userId);
// Нетрекомендовать
logger.debug("User with id " + userId + " not found");
При записи исключений постарайтесь внести информацию о стеке, чтобы облегчить обнаружение и устранение неполадок.
try {
// some code
} catch (Exception e) {
logger.error("An error occurred while processing request", e);
}
Бревно файлы могут быстро расти в производственной среде,Регулярное архивирование и очисткабревно可以避免磁盘空间Нет足из问题。использоватьLogbackизTimeBasedRollingPolicy
иSizeAndTimeBasedRollingPolicy
может помочь достичьбревноиз自动归档и清理。
ELK (Elasticsearch, Logstash, Kibana) — мощный инструмент анализа и визуализации журналов. Вывод журналов Spring Boot в Logstash, а затем отображение их в хранилище Elasticsearch и Kibana для мониторинга и анализа журналов в реальном времени.
Graylog — еще один популярный инструмент управления журналами. Настроив Spring Boot для вывода журналов в Graylog, можно обеспечить централизованное управление и анализ журналов.
Журналы являются неотъемлемой частью приложения. Правильная настройка журналов и управление ими могут значительно улучшить удобство обслуживания и надежность системы. Интегрируя Logback со Spring Boot и применяя лучшие практики и стратегии, мы можем добиться эффективного ведения журналов и управления, чтобы обеспечить стабильную работу приложения. Я надеюсь, что эта статья поможет вам лучше понять и использовать систему журналирования Spring Boot, а также создавать более надежные приложения.