Spring Boot——日志介绍和配置

Spring Boot 日志介绍

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

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


日志配置方法

通过 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. 环境区分 :可通过 springProfile 在 logback-spring.xml 中区分不同环境的配置。

    XML 复制代码
    <springProfile name="dev">
        <root level="DEBUG">
            <appender-ref ref="CONSOLE"/>
        </root>
    </springProfile>
相关推荐
马剑威(威哥爱编程)10 分钟前
【AI全栈后端12-03】Spring Boot 用多模型路由把智能客服成本降下来
java·人工智能·spring boot
霸道流氓气质14 分钟前
AI模型幻觉检测与抑制完全指南:从规则引擎到RAG对比的Java生产级实战
java·开发语言·人工智能
niucloud-admin25 分钟前
JAVA V6 多商户商城 开发文档——手机端前端
java·开发语言·前端
云安全助手31 分钟前
自建接入VS聚合平台:企业 AI 调用的选型思路与迁移成本拆解
java·大数据·数据库·人工智能·ai大模型
樱花落木兰31 分钟前
SpringBoot + ECharts 后台数据统计报表模块实战
java·javascript·spring boot·ai·log4j·github·echarts
霸道流氓气质40 分钟前
Dify 可视化 LLM 应用开发平台完全指南:从Workflow编排到Java生产级集成实战
java·开发语言
m0_587383001 小时前
24小时自助健身房软硬件解决方案实战:从架构设计到部署指南
java·spring·小程序·架构·需求分析
CallFay云起未来1 小时前
AI客服上线后多久才能回本?从TCO到ROI的完整测算方法
java·大数据·人工智能·架构·文心一言
Sam_Deep_Thinking1 小时前
什么是CountDownLatch?
java·后端·面试·程序员
小蒜学长1 小时前
基于SpringBoot和Vue的低卡食品销售系统的设计与实现(代码+数据库+LW)
java·后端·springboot·健康管理·低卡食品销售系统