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"/>
<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"/>
</root>
</configuration>关键点说明:
• scan="true" 表示配置变更后自动重载(开发可用,生产建议关掉)
• property 定义变量,后续可用 ${LOG_PATH} 引用
• appender 是“输出通道”,每个需有唯一 name
• root 是最顶层 Logger,不设 name,默认接管全部未显式声明的类日志
怎么让不同模块用不同级别或输出目标
比如想让 controller 包下的日志显示 DEBUG,而 service 包只打 INFO,且各自写进不同文件:
立即学习“Java免费学习笔记(深入)”;
- 用
<logger name="com.example.controller" level="DEBUG" additivity="false">单独声明 - additivity="false" 很重要:避免日志重复打印到 root 和当前 logger
- 为该 logger 指定专属 appender,比如
<appender-ref ref="CONTROLLER_FILE"/> - 再配一个
RollingFileAppender,设置<file>${LOG_PATH}/controller.log</file>
这样 controller 的日志就只进 controller.log,不会混在主日志里。
控制台和文件同时输出怎么配
只要在 <root> 或某个 <logger> 里引用多个 appender 就行:
<root level="INFO"> <appender-ref ref="CONSOLE"/> <appender-ref ref="FILE"/> </root>
不需要额外逻辑,Logback 自动把同一条日志分发给所有引用的 appender。如果只想某类日志进文件、另一类进控制台,就靠不同 logger + 不同 appender-ref 组合来实现。


















