自学内容网 自学内容网

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 支持通过配置文件调整日志行为,常用配置如下:

控制台日志级别

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

输出日志到文件

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

自定义日志格式

# 控制台日志格式
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 会优先加载此文件。

示例配置

<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 注解,可自动生成日志对象,避免手动声明:

import lombok.extern.slf4j.Slf4j;

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


注意事项

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

    <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 中区分不同环境的配置。

    <springProfile name="dev">
        <root level="DEBUG">
            <appender-ref ref="CONSOLE"/>
        </root>
    </springProfile>
    


原文地址:https://blog.csdn.net/yangminlei/article/details/156764907

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!