Spring Boot——日志介绍和配置

Spring Boot 日志介绍

Spring Boot 默认使用 SLF4J(Simple Logging Facade for Java) 作为日志门面,并搭配 Logback 作为默认日志实现框架。SLF4J 提供了统一的日志接口,允许开发者灵活切换底层日志实现(如 Log4j2、JUL 等)。

Spring Boot 自动配置了合理的日志输出格式、级别和文件输出路径,开发者无需手动配置即可快速使用。日志级别从低到高分为:TRACEDEBUGINFOWARNERRORFATAL


日志配置方法

通过 application.properties/application.yml 配置

Spring Boot 支持通过配置文件调整日志行为,常用配置如下:

控制台日志级别

properties 复制代码
# 设置全局日志级别
logging.level.root=INFO
# 设置特定包或类的日志级别(例如设置为DEBUG)
logging.level.com.example.demo=DEBUG

输出日志到文件

properties 复制代码
# 指定日志文件路径(默认生成 spring.log)
logging.file.name=logs/app.log
# 按日志文件大小和日期归档(需搭配Logback配置)
logging.logback.rollingpolicy.max-file-size=10MB
logging.logback.rollingpolicy.max-history=7

自定义日志格式

properties 复制代码
# 控制台日志格式
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
# 文件日志格式
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n

自定义 Logback 配置文件

若需更复杂的配置(如异步日志、按规则归档),可创建 logback-spring.xml 文件(放置在 src/main/resources 目录下)。Spring Boot 会优先加载此文件。

示例配置

XML 复制代码
<configuration>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>logs/app.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>logs/app-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>10MB</maxFileSize>
            <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="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>

使用 Lombok 简化日志代码

通过 Lombok 的 @Slf4j 注解,可自动生成日志对象,避免手动声明:

java 复制代码
import lombok.extern.slf4j.Slf4j;

@Slf4j
@RestController
public class DemoController {
    public void demoMethod() {
        log.debug("Debug message");
        log.info("Info message");
    }
}

注意事项

  1. 日志实现切换:如需替换 Logback,需排除默认依赖并引入其他实现(如 Log4j2)。

    XML 复制代码
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>
  2. 环境区分 :可通过 springProfilelogback-spring.xml 中区分不同环境的配置。

    XML 复制代码
    <springProfile name="dev">
        <root level="DEBUG">
            <appender-ref ref="CONSOLE"/>
        </root>
    </springProfile>
相关推荐
左左右右左右摇晃8 分钟前
Java并发——synchronized锁
java·开发语言
sxlishaobin1 小时前
Java I/O 模型详解:BIO、NIO、AIO
java·开发语言·nio
彭于晏Yan1 小时前
Spring AI(二):入门使用
java·spring boot·spring·ai
有一个好名字1 小时前
vibe codeing 开发流程
java
兑生1 小时前
【灵神题单·贪心】3745. 三元素表达式的最大值 | 排序贪心 | Java
java·开发语言
polaris06301 小时前
Windows操作系统部署Tomcat详细讲解
java·windows·tomcat
卓怡学长2 小时前
m280本科生导师指导平台
java·数据库·spring·tomcat·maven·intellij-idea
一直都在5722 小时前
Java死锁
java·开发语言
我真会写代码3 小时前
深度解析并发编程锁升级:从偏向锁到重量级锁,底层原理+面试考点全拆解
java·并发编程·
Meepo_haha3 小时前
创建Spring Initializr项目
java·后端·spring