如何在Linux终端通过gradle run输出带颜色的Java Logback日志?
无需修改代码实现SLF4J日志终端着色的最优方法
SLF4J是日志门面,实际生效的是底层日志实现(主流为Logback、Log4j2),只需修改对应实现的配置文件,即可在xfce4-terminal中给不同级别日志自动着色,无需改动业务代码里的日志语句。以下分两种主流实现给出配置方案:
一、Logback实现方案
- 确认依赖:确保项目已引入Logback的SLF4J绑定依赖,Gradle中添加:
implementation 'ch.qos.logback:logback-classic:1.4.8'
- 添加Logback配置文件:在
src/main/resources下创建logback.xml,配置带颜色的控制台输出:
<configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <!-- 自定义级别对应颜色:ERROR红、WARN黄、INFO绿、DEBUG蓝 --> <pattern>%highlight(%-5level){ERROR=red, WARN=yellow, INFO=green, DEBUG=blue} %logger{36} - %msg%n</pattern> <!-- 开启Jansi支持ANSI颜色码 --> <withJansi>true</withJansi> </encoder> </appender> <!-- 全局日志级别设为DEBUG,确保所有级别日志输出 --> <root level="DEBUG"> <appender-ref ref="STDOUT" /> </root> </configuration>
二、Log4j2实现方案
- 确认依赖:确保项目已引入Log4j2的SLF4J绑定依赖,Gradle中添加:
implementation 'org.apache.logging.log4j:log4j-slf4j-impl:2.20.0'
- 添加Log4j2配置文件:在
src/main/resources下创建log4j2.xml,配置带颜色的控制台输出:
<Configuration status="WARN"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <!-- 自定义级别对应颜色,直接通过%highlight转换器实现 --> <PatternLayout pattern="%highlight{%-5level}{ERROR=red, WARN=yellow, INFO=green, DEBUG=blue} %logger{36} - %msg%n" /> </Console> </Appenders> <Loggers> <Root level="DEBUG"> <AppenderRef ref="Console" /> </Root> </Loggers> </Configuration>
注意事项
- xfce4-terminal默认支持ANSI颜色渲染,若未生效可检查终端设置,确保开启「允许使用颜色」选项;
- Gradle运行应用时(
gradle run)会直接转发Java进程的输出,只要日志框架输出带ANSI颜色码,终端就会自动渲染对应颜色; - 两种方案均无需修改任何业务代码中的日志打印语句,仅通过配置文件即可实现着色。
内容的提问来源于stack exchange,提问作者Manius
相关产品推荐
相关产品推荐

