Logback 在 Spring Boot 中的详细配置

1. Logback 配置文件

Spring Boot 默认会加载 classpath 下的 logback-spring.xml(推荐)或 logback.xml 作为 Logback 的配置文件。

推荐使用 logback-spring.xml,因为 Spring Boot 提供了扩展支持(例如基于 Profile 的配置)。

配置文件位置
  • 放在 src/main/resources/ 目录下。

2. 基础配置示例

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">
    <!-- 定义变量 -->
    <property name="LOG_PATH" value="./logs" />
    <property name="LOG_FILE" value="myapp" />

    <!-- 控制台输出 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 滚动文件输出 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_PATH}/${LOG_FILE}.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/${LOG_FILE}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>50MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>1GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 日志级别和输出源配置 -->
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>

    <!-- 指定包或类的日志级别 -->
    <logger name="com.example.demo" level="DEBUG" />
</configuration>

3. 关键配置项说明

Appender(日志输出器)
  • ConsoleAppender: 输出日志到控制台。
  • RollingFileAppender : 输出到文件并支持滚动(按时间、大小分割)。
    • SizeAndTimeBasedRollingPolicy: 根据时间和文件大小滚动。
    • maxFileSize: 单个文件最大大小。
    • maxHistory: 保留的历史日志文件数量。
    • totalSizeCap: 日志文件总大小限制。
Encoder(日志格式化)
  • <pattern> 定义日志格式,常用占位符:
    • %d: 日期时间
    • %thread: 线程名
    • %-5level: 日志级别(左对齐,宽度5)
    • %logger{36}: 日志输出者的名称(最长36字符)
    • %msg: 日志消息
    • %n: 换行符
Logger 和 Root Logger
  • <root>: 根日志配置,所有日志默认继承此配置。
  • <logger>: 针对特定包或类配置日志级别。

4. Spring Boot 特有功能

通过 application.properties 覆盖配置

application.properties 中可以覆盖部分日志配置:

复制代码
# 设置根日志级别
logging.level.root=INFO
# 设置特定包日志级别
logging.level.com.example.demo=DEBUG
# 日志文件路径
logging.file.path=./logs
logging.file.name=./logs/app.log
按 Profile 配置日志

logback-spring.xml 中使用 <springProfile> 实现多环境配置:

复制代码
<springProfile name="dev">
    <root level="DEBUG">
        <appender-ref ref="CONSOLE" />
    </root>
</springProfile>

<springProfile name="prod">
    <root level="INFO">
        <appender-ref ref="FILE" />
    </root>
</springProfile>

5. 高级配置

异步日志

使用 AsyncAppender 提升性能:

复制代码
<appender name="ASYNC_FILE" class="ch.qos.logback.classic.AsyncAppender">
    <appender-ref ref="FILE" />
    <!-- 队列大小,超出此值会丢弃 TRACE/DEBUG 日志 -->
    <queueSize>256</queueSize>
</appender>
彩色日志输出

ConsoleAppender 中启用颜色:

复制代码
<encoder>
    <pattern>%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%-5level) %clr(${PID}){magenta} --- [%thread] %clr(%logger{36}){cyan} : %msg%n</pattern>
</encoder>

6. 常见问题解决

配置文件未生效
  • 确认文件名是 logback-spring.xml 且位于 src/main/resources
  • 检查是否有其他日志框架(如 Log4j2)冲突,排除相关依赖。
日志文件未滚动
  • 检查 RollingFileAppender 配置,确保路径和文件名合法。
  • 确保 maxHistorytotalSizeCap 设置合理。
相关推荐
️7712 分钟前
八股碎碎念02——Synchronized
java·开发语言·jvm
lzjava202412 分钟前
SQL解析工具JSQLParser
java·数据库
Auc2418 分钟前
Neo4j入门第二期(Spring Data Neo4j的使用)
java·spring·neo4j
不秃的开发媛18 分钟前
JFace中MVC的表格使用介绍
java·开发语言·mvc
果冻kk30 分钟前
Java桌面应用开发详解:自制截图工具从设计到打包的全流程【附源码与演示】
java·开发语言
苏生Susheng37 分钟前
【工具类】常用的工具类——CollectionUtil
java·spring cloud·springboot·集合·软件开发·工具类·collectionutil
caihuayuan442 分钟前
Java设计模式: 工厂模式与策略模式
java·大数据·sql·spring·课程设计
Xenia22344 分钟前
JAVA05基本数据类型和包装类的转换,转换成其他数据类型,包装类与字符串的转换+学生类的定义实例
java
忘梓.1 小时前
「二叉搜索树·手撕暴走篇」:用C++《一路向北》狂写指针のの死亡轮盘!
java·开发语言·c++
泽02021 小时前
C++之STL--string
java·开发语言·c++