当前位置: 首页 > article >正文

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 配置,确保路径和文件名合法。
  • 确保 maxHistory 和 totalSizeCap 设置合理。
http://www.lryc.cn/news/2384835.html

相关文章:

  • 写起来比较复杂的深搜题目
  • MySQL强化关键_016_存储引擎
  • CSS:margin的塌陷与合并问题
  • 防护等级IPxx含义 -雨天充电需要防护盖吗
  • 【设计模式】责任链+模板+工程模式使用模板
  • 探索服务网格(Service Mesh):云原生时代的网络新范式
  • SQL SERVER中实现类似LEAST函数的功能,返回多列数据中的最小值
  • SymPy | 获取表达式自由变量方法与因式分解
  • 深度剖析并发I/O模型select、poll、epoll与IOCP核心机制
  • 单片机——实现交通信号灯管理
  • 数据结构 -- 交换排序(冒泡排序和快速排序)
  • 【算法】: 前缀和算法(利用o(1)的时间复杂度快速求区间和)
  • macOS 安装 PostgreSQL
  • 打破传统范式,线上 3D 画展彰显多元亮点
  • Linux系统:基础命令之 ls~pwd~cd
  • MuJoCo安装记录
  • 软件工程(八):UML类图的几种关系
  • python定时删除指定索引
  • 基于OAuth2-proxy和Keycloak为comfyui实现SSO
  • SmartSoftHelp 之 SQL Server 数据库安全备份与安全还原详解---深度优化版:SmartSoftHelp DeepCore XSuite
  • Spring 代理与 Redis 分布式锁冲突:一次锁释放异常的分析与解决
  • 【数据结构】队列的完整实现
  • 2025 全球优质 AI 产品深度测评:从通用工具到垂直领域的技术突围 —— 轻量聚合工具篇
  • Python爬虫实战:获取天气网最近一周北京的天气数据,为日常出行做参考
  • 根据YOLO数据集标签计算检测框内目标面积占比(YOLO7-10都适用)
  • Helm简介、安装、配置、使用!
  • LLM笔记(九)KV缓存(2)
  • 开发 前端搭建npm v11.4.0 is known not to run on Node.js v14.18.1.
  • LVS 负载均衡集群应用实战
  • MySQL——基本查询内置函数