Logback作为Java主流日志框架,其常规配置主要通过XML文件实现,核心组件包括Appender(输出端)、Logger(记录器)和Layout(格式)。以下是关键配置要点及示例:
⚙️ 一、配置文件基础
-
命名规则
配置文件需命名为logback.xml或logback-spring.xml(Spring项目专用),放置在src/main/resources目录下。Logback会自动识别这8种命名格式。 -
基本结构
<configuration scan="true" scanPeriod="30 seconds"> <!-- 定义变量 --> <property name="LOG_HOME" value="./logs" /> <!-- Appender配置 --> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">...</appender> <!-- Logger级别设置 --> <logger name="com.example.controller" level="DEBUG" /> <!-- 根Logger --> <root level="INFO"> <appender-ref ref="CONSOLE" /> </root> </configuration>scan:自动重载配置(生产环境建议关闭)。property:定义全局变量(如日志路径)。
📤 二、Appender配置详解
1. 控制台输出(ConsoleAppender)
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
pattern:日志格式模板(%msg为日志内容,%n换行)。
2. 文件滚动记录(RollingFileAppender)
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/app.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<maxFileSize>50MB</maxFileSize> <!-- 单个文件上限 -->
<maxHistory>7</maxHistory> <!-- 保留7天日志 -->
<totalSizeCap>2GB</totalSizeCap> <!-- 总量限制 -->
</rollingPolicy>
<encoder>
<pattern>%d{ISO8601} [%thread] %level %logger - %msg%n</pattern>
</encoder>
</appender>
- 按日期+序号分割文件(如
app.2023-10-01.0.log.gz)。 - 支持按大小(
maxFileSize)和时间(maxHistory)滚动。
📊 三、日志级别控制
-
级别优先级
TRACE < DEBUG < INFO < WARN < ERROR,设置某一级别后,更高级别的日志自动生效。- 示例:
<root level="INFO">会输出INFO、WARN、ERROR日志。
- 示例:
-
包/类级别定制
通过<logger>为特定包或类设置独立级别:<logger name="org.springframework" level="WARN" /> <!-- 仅输出WARN及以上 --> <logger name="com.example.service" level="DEBUG" /> <!-- 调试阶段更详细 -->
四、日志格式定制
-
常用占位符
符号 说明 %d日期时间 %thread线程名 %-5level左对齐的日志级别 %logger{36}缩写类名(最长36字符) %msg日志内容 -
彩色输出(Spring Boot)
使用%highlight或%clr实现控制台彩色日志:<pattern>%d{yyyy-MM-dd} %highlight(%-5level) %cyan(%logger) - %msg%n</pattern>
🌱 五、Spring Boot集成建议
-
简化配置
在application.yml中快速配置基础项:logging: level: root: info com.example: debug file: path: /var/log/myapp pattern: console: "%d %-5level [%thread] %logger{15} - %msg%n"- 复杂需求仍需
logback-spring.xml。
- 复杂需求仍需
-
多环境配置
使用<springProfile>区分环境:<springProfile name="dev"> <root level="DEBUG" /> </springProfile> <springProfile name="prod"> <root level="INFO" /> </springProfile>
💎 最佳实践总结
- 生产环境配置:关闭
scan避免性能损耗,启用日志滚动防止磁盘占满。 - 敏感信息过滤:避免在日志中输出密码等敏感数据(可通过自定义
Converter实现)。 - 异步日志:对高并发场景,使用
AsyncAppender提升性能(需引入额外依赖)。

2456

被折叠的 条评论
为什么被折叠?



