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>
相关推荐
惊讶的猫2 小时前
探究StringBuilder和StringBuffer的线程安全问题
java·开发语言
jmxwzy2 小时前
Spring全家桶
java·spring·rpc
Halo_tjn2 小时前
基于封装的专项 知识点
java·前端·python·算法
Fleshy数模3 小时前
从数据获取到突破限制:Python爬虫进阶实战全攻略
java·开发语言
像少年啦飞驰点、3 小时前
零基础入门 Spring Boot:从“Hello World”到可上线的 Web 应用全闭环指南
java·spring boot·web开发·编程入门·后端开发
苍煜3 小时前
万字详解Maven打包策略:从基础插件到多模块实战
java·maven
有来技术3 小时前
Spring Boot 4 + Vue3 企业级多租户 SaaS:从共享 Schema 架构到商业化套餐设计
java·vue.js·spring boot·后端
东东5164 小时前
xxx医患档案管理系统
java·spring boot·vue·毕业设计·智慧城市
东东5165 小时前
学院个人信息管理系统 (springboot+vue)
vue.js·spring boot·后端·个人开发·毕设
一个响当当的名号5 小时前
lectrue9 索引并发控制
java·开发语言·数据库