logback基本配置核心是三件事:指定appender(输出位置)、pattern(日志格式)、logger级别(记录范围);配置文件须置于src/main/resources下,推荐logback-spring.xml以支持profile切换。

Logback 在 Java 项目中做基本配置,核心就是三件事:指定日志输出位置(Appender)、定义日志格式(Pattern)、设置记录范围(Logger 级别)。Spring Boot 项目默认已集成,无需额外引包,只需放对配置文件、写清结构即可生效。
配置文件放在哪儿
必须放在 src/main/resources 目录下,推荐用 logback-spring.xml(比 logback.xml 多支持 Spring Profile 环境切换)。
Logback 启动时会按顺序查找:
logback-test.xml → logback.groovy → logback.xml → logback-spring.xml
所以命名和位置错了,配置就不起作用。
基础 XML 结构长什么样
一个最小可用的 logback-spring.xml 长这样:
<?xml version="1.0" encoding="UTF-8"?><configuration scan="true" scanperiod="30 seconds"><property name="LOG_PATH" value="./logs"></property><p><!-- 控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern><charset>UTF-8</charset></encoder></appender></p>
<p><!-- 根 Logger:所有日志最终都归到这里 -->
<root level="INFO"><appender-ref ref="CONSOLE"></appender-ref></root></p></configuration>
关键点说明:
• scan="true" 表示配置变更后自动重载(开发可用,生产建议关掉)
• property 定义变量,后续可用 ${LOG_PATH} 引用
• appender 是“输出通道”,每个需有唯一 name
• root 是最顶层 Logger,不设 name,默认接管全部未显式声明的类日志
怎么让不同模块用不同级别或输出目标
比如想让 controller 包下的日志显示 DEBUG,而 service 包只打 INFO,且各自写进不同文件:
- 用
<logger name="com.example.controller" level="DEBUG" additivity="false"></logger>单独声明 - additivity="false" 很重要:避免日志重复打印到 root 和当前 logger
- 为该 logger 指定专属 appender,比如
<appender-ref ref="CONTROLLER_FILE"></appender-ref> - 再配一个
RollingFileAppender,设置<file>${LOG_PATH}/controller.log</file>
这样 controller 的日志就只进 controller.log,不会混在主日志里。
控制台和文件同时输出怎么配
只要在 <root></root> 或某个 <logger></logger> 里引用多个 appender 就行:
<root level="INFO"><appender-ref ref="CONSOLE"></appender-ref><appender-ref ref="FILE"></appender-ref></root>
不需要额外逻辑,Logback 自动把同一条日志分发给所有引用的 appender。如果只想某类日志进文件、另一类进控制台,就靠不同 logger + 不同 appender-ref 组合来实现。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











