Logback 通过 %highlight{} 转换词(1.2.0+ 版本内置)实现自动彩色日志,按级别映射 ANSI 颜色,无需额外依赖;也可手动嵌入 ANSI 转义码精细控制颜色,需确保终端支持及版本合规。

Logback 本身不内置彩色输出,但可通过 PatternLayout 配合 ANSI 转义序列(或使用 ch.qos.logback.core.ConsoleAppender 的 encoder 中的 PatternLayout)实现控制台彩色日志。关键在于使用支持 ANSI 的布局器,并确保终端支持颜色(如 IntelliJ IDEA、Windows Terminal、iTerm2、大多数 Linux 终端都支持)。
启用 ANSI 彩色需用 PatternLayout + %highlight{...}
Logback 自带 %highlight{} 转换词(自 1.2.0+ 版本起),它会根据日志级别自动添加 ANSI 颜色代码,无需额外依赖:
-
%highlight{%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n}是最常用写法 -
%highlight{}内部已适配ERROR→red、WARN→yellow、INFO→green、DEBUG→blue、TRACE→magenta - 该转换词默认启用,无需配置额外插件;但需确保 Logback 版本 ≥ 1.2.0(推荐 1.4.x)
手动指定 ANSI 颜色(兼容老版本或自定义需求)
若需精细控制颜色,可直接在 pattern 中嵌入 ANSI 转义码(格式:\u001B[样式;前景色;背景色m):
- 例如:
\u001B[32m%d{HH:mm:ss.SSS}\u001B[0m表示绿色时间(\u001B[0m 重置样式) - 常用颜色码:
30=黑、31=红、32=绿、33=黄、34=蓝、35=品红、36=青、37=白 - 加粗用
1,如\u001B[1;31m表示加粗红色
完整 logback.xml 示例(含彩色 ConsoleAppender)
以下是一个最小可用配置,使用 %highlight 实现自动着色:
立即学习“Java免费学习笔记(深入)”;
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%highlight{%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n}</pattern>
</encoder>
</appender>
<p><root level="INFO">
<appender-ref ref="CONSOLE"/>
</root>
</configuration>注意:<encoder> 必须包裹 <pattern>,不能直接写在 <appender> 下;ConsoleAppender 默认使用 PatternLayoutEncoder,无需显式指定 class。
常见问题与验证
如果看不到颜色,请检查以下几点:
- 确认运行环境终端支持 ANSI(IDE 内置终端一般支持;CMD 默认不支持,建议改用 Windows Terminal 或启用 Virtual Terminal)
- 检查 Logback 版本:执行
mvn dependency:tree | grep logback,确保为 1.2.0+(Spring Boot 2.2+ 默认带 1.2.3+) - 避免在 pattern 中混用
%highlight和手动 ANSI 码,否则可能冲突 - 若用 SLF4J API 打印日志,确保未被其他日志桥接器(如 JUL-to-SLF4J)干扰输出流


















