Spring Boot日志配置全解析:模式选择与最佳实践

1. Spring Boot 日志记录简介

Spring Boot 日志记录的关键特性:

2. 在 Spring Boot 中设置日志记录

默认配置:

[yyyy-MM-dd HH:mm:ss] [LEVEL] [thread-name] logger-name: message

2025-01-23 10:15:30 INFO [main] com.example.DemoApplication: Application started successfully.

添加日志记录依赖项:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
</dependency>

3. 日志记录模式的类型

3.1 简单模式

logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} [%p] %m%n

2025-01-23 10:20:00 [INFO] Application started.

3.2 JSON 日志记录模式

<configuration>
    <appender name="JSON_CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"/>
    </appender>

<root level="info">
        <appender-ref ref="JSON_CONSOLE"/>
    </root>
</configuration>
{
"timestamp": "2025-01-23T10:22:00.123Z",
"level": "INFO",
"logger": "com.example.DemoApplication",
"message": "Application started"
}

3.3 颜色编码控制台模式

logging.pattern.console=%clr(%d{yyyy-MM-dd HH:mm:ss}){faint} %clr([%p]){highlight} %clr(%c{1.}){cyan}: %m%n%wEx

3.4 滚动文件日志记录模式

<configuration>
    <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>logs/application.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logs/application-%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>7</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

<root level="info">
        <appender-ref ref="ROLLING"/>
    </root>
</configuration>

4. Spring Boot 日志记录的最佳实践

4.1 使用 SLF4J

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class DemoApplication {
    private static final Logger logger = LoggerFactory.getLogger(DemoApplication.class);
    public static void main(String[] args) {
        logger.info("Application started");
    }
}

4.2 在适当的级别记录日志

4.3 避免记录敏感信息

4.4 使用异步日志记录(可选)

<configuration>
    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="ROLLING"/>
    </appender>
<root level="info">
        <appender-ref ref="ASYNC"/>
    </root>
</configuration>

5. 调试与故障排除

启用调试日志

logging.level.root=DEBUG

logging.level.com.example=DEBUG

启用跟踪日志

logging.level.com.example=TRACE

检查日志目录

结论

请登录后发表评论

    没有回复内容