java控制台彩色日志可通过logback的%highlight{}自动着色(error红、warn黄、info绿等),或手动嵌入ansi转义码(如\u001b[31m红色+\u001b[0m重置),需终端支持(ide、linux/macos终端、windows terminal等);windows cmd需启用vt模式或使用jansi库兼容。

Java 本身的标准日志框架(如 java.util.logging 或 SLF4J + Logback)默认不支持控制台彩色输出,但可以通过终端 ANSI 转义序列实现——只要运行环境的终端支持(如 Linux/macOS 终端、Windows Terminal、IntelliJ IDEA 控制台等),就能让日志带颜色。
使用 Logback + ANSI 配置(推荐)
Logback 是最常用且原生支持 ANSI 彩色日志的 SLF4J 实现。只需在 logback.xml 中启用 %highlight{...} 或直接用 %coloredLevel 等转换器:
- 确保依赖中包含
ch.qos.logback:logback-classic(Maven) - 在
logback.xml的<appender></appender>中使用%highlight{...}包裹日志内容,例如:
Logback 内置的 %highlight{} 会根据日志级别自动着色:
ERROR → 红色加粗,WARN → 黄色,INFO → 白色/绿色,DEBUG → 蓝色,TRACE → 洋红色
手动插入 ANSI 转义码(轻量级方案)
如果不用 Logback,或想在 System.out.println 或简单日志中临时加色,可直接拼接 ANSI 字符串:
-
绿色(INFO):
"\u001B[32mINFO: hello\u001B[0m" -
红色(ERROR):
"\u001B[31mERROR: failed\u001B[0m" -
蓝色(DEBUG):
"\u001B[34mDEBUG: value=42\u001B[0m"
其中 \u001B[32m 是绿色前景色,\u001B[0m 是重置样式(必须加,否则后续所有输出都带色)
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
Windows 命令提示符(cmd.exe)需额外启用虚拟终端
旧版 Windows cmd 默认不解析 ANSI 码。Java 程序启动前需启用:
- 代码中调用
System.setProperty("jansi.passthrough", "true");(配合 Jansi 库) - 或更通用方式:在 main 方法开头执行系统命令启用(仅限 Windows):
更稳妥的做法是改用 Windows Terminal 或在 IDE 中运行(IntelliJ / VS Code 终端均原生支持)
进阶:用 Jansi 库统一处理跨平台兼容
Jansi 是专为 Java 设计的 ANSI 封装库,自动检测终端能力并适配 Windows:
- Maven 引入:
org.fusesource.jansi:jansi - 使用示例:
System.out.println(ansi().fg(Ansi.Color.GREEN).a("INFO").reset().a(" : success").toString());
它会自动在 Windows 上调用 WinAPI 启用 VT 模式,无需手动判断环境
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










