Spring Boot 日志配置

Spring Boot支持 JavaUtil Logging、 Log4J、 Log4J2和 Logback作为日志框架,无论使用哪种日志框架, Spring Boot已为当前使用日志框架的控制台输出及文件输出做好了配置,默认情况下, Spring Boot使用 Logback作为日志框架。

配置 logback(官方推荐使用)

配置日志文件

spring boot 默认会加载 classpath:logback-spring.xml 或者 classpath:logback-spring.groovy。

如需要自定义文件名称,在 application.properties 中配置 logging.config 选项即可。

在 src/main/resources 下创建 logback-spring.xml 文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<configuration>
    <!-- 文件输出格式 -->
    <property name="PATTERN" value="%-12(%d{yyyy-MM-dd HH:mm:ss.SSS}) |-%-5level [%thread] %c [%L] -| %msg%n" />
    <!-- test文件路径 -->
    <property name="TEST_FILE_PATH" value="d:/test.log" />
    <!-- pro文件路径 -->
    <property name="PRO_FILE_PATH" value="/opt/test/log" />    

    <!-- 开发环境 -->
    <springProfile name="dev">
        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>${PATTERN}</pattern>
            </encoder>
        </appender>
        <logger name="com.light.springboot" level="debug" />
        <root level="info">
            <appender-ref ref="CONSOLE" />
        </root>
    </springProfile>    

    <!-- 测试环境 -->
    <springProfile name="test">
        <!-- 每天产生一个文件 -->
        <appender name="TEST-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            
### 配置 Spring Boot 应用的日志系统 Spring Boot 提供了灵活的日志配置机制,支持多种日志实现(如 Logback、Log4j2 等),并通过简单的配置即可完成日志系统的初始化和自定义。 #### 1. **日志系统的激活与选择** Spring Boot 会根据类路径中的依赖自动选择合适的日志系统。例如,如果类路径中存在 `logback-core` 或 `log4j-core`,则分别激活 Logback 或 Log4j2。也可以通过 `org.springframework.boot.logging.LoggingSystem` 系统属性强制指定日志系统,例如: ```bash -Dorg.springframework.boot.logging.LoggingSystem=org.springframework.boot.logging.logback.LogbackLoggingSystem ``` 若要完全禁用日志配置,可设置该属性为 `none` [^1]。 #### 2. **日志配置文件的加载** 默认情况下,Spring Boot 会从类路径根目录或通过 `logging.config` 属性指定的位置加载日志配置文件。例如: ```yaml logging: config: classpath:custom-logging-config.xml ``` 若未指定 `logging.config`,则会使用默认的日志配置逻辑进行初始化 [^2]。 #### 3. **日志级别配置** 可以通过 `logging.level.*` 配置包级别的日志输出级别,例如: ```yaml logging: level: com.example.myapp: DEBUG ``` 上述配置将 `com.example.myapp` 包下的日志级别设置为 `DEBUG` [^3]。 #### 4. **日志输出格式配置** Spring Boot 支持定义控制台和文件中日志的输出格式: ```yaml logging: pattern: console: "%d{yyyy-MM-dd HH:mm:ss} - %msg%n" file: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n" level: "%5p" ``` - `console` 定义控制台日志格式。 - `file` 定义文件日志格式。 - `level` 定义日志级别渲染格式 [^3]。 #### 5. **日志文件路径与名称** 可以通过以下属性指定日志文件的输出路径和名称: ```yaml logging: file: /var/logs/myapp.log path: /var/logs/ ``` 如果仅配置 `logging.path`,则日志文件默认命名为 `spring.log` [^3]。 #### 6. **异常日志格式自定义** 可通过 `logging.exception-conversion-word` 自定义异常日志的格式,例如: ```yaml logging: exception-conversion-word: "%rEx{full}" ``` 该配置将异常信息以完整堆栈形式记录 [^3]。 --- ### 示例:完整的 `application.yml` 日志配置 ```yaml logging: level: com.example.myapp: DEBUG pattern: console: "%d{yyyy-MM-dd HH:mm:ss} - %msg%n" file: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n" level: "%5p" file: /var/logs/myapp.log path: /var/logs/ exception-conversion-word: "%rEx{full}" ``` --- ### 日志系统初始化流程简述 Spring Boot 在启动时,通过 `LoggingApplicationListener` 触发日志系统的初始化流程: 1. 获取类加载器并创建对应的 `LoggingSystem` 实例(如 `LogbackLoggingSystem`)。 2. 判断是否指定了 `logging.config` 配置。 3. 若指定,则调用 `initializeWithSpecificConfig()` 加载指定配置文件。 4. 若未指定,则调用 `initializeWithConventions()` 使用默认配置。 5. 最终加载默认配置或自定义配置并完成日志系统的初始化 。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值