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>
相关推荐
JH30737 小时前
SpringBoot 优雅处理金额格式化:拦截器+自定义注解方案
java·spring boot·spring
Coder_Boy_8 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
invicinble8 小时前
对tomcat的提供的功能与底层拓扑结构与实现机制的理解
java·tomcat
较真的菜鸟9 小时前
使用ASM和agent监控属性变化
java
黎雁·泠崖9 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
qq_124987075310 小时前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计
Coder_Boy_10 小时前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端
Mr_sun.10 小时前
Day06——权限认证-项目集成
java
瑶山10 小时前
Spring Cloud微服务搭建四、集成RocketMQ消息队列
java·spring cloud·微服务·rocketmq·dashboard
abluckyboy10 小时前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法