如何在IntelliJ中实现Log4j2控制台输出按级别着色?配置无效求助
解决Log4j2控制台日志无颜色输出的问题
嘿,我帮你排查下控制台日志不显示颜色的问题,主要有几个关键点需要修正:
1. 核心问题:API与配置文件版本不兼容
你代码里用的是Log4j 1.x的API(org.apache.log4j.Logger),但配置文件却是Log4j2的格式,这两者完全不兼容!Log4j2需要使用它自己的API来初始化日志实例。
修正后的代码:
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; public class StartUp { private static final Logger LOGGER = LogManager.getLogger(StartUp.class); // 建议用当前类,而非Class.class public static void main(String[] args) throws Exception { LOGGER.trace("Trace Message!"); LOGGER.debug("Debug Message!"); LOGGER.info("Info Message!"); LOGGER.warn("Warn Message!"); LOGGER.error("Error Message!"); LOGGER.fatal("Fatal Message!"); } }
2. 检查控制台是否支持ANSI颜色
有些终端默认不支持ANSI转义码(比如Windows旧版CMD),导致颜色无法显示:
- Windows 10/11:可以通过命令开启虚拟终端支持:
reg add HKCU\Console /v VirtualTerminalLevel /t REG_DWORD /d 1,重启终端后生效 - 推荐使用PowerShell、Git Bash、Windows Terminal这类原生支持ANSI颜色的终端
- Linux/macOS的终端默认都支持,无需额外配置
3. 确认Log4j2依赖完整性
确保你的项目中引入了正确的Log4j2依赖(API和Core都要有,版本保持一致),比如Maven依赖:
<dependencies> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.20.0</version> <!-- 替换为你使用的版本 --> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.20.0</version> </dependency> </dependencies>
4. 优化PatternLayout的颜色配置
你的配置里INFO=black在浅色背景的终端上几乎看不到,建议调整为更明显的颜色,同时blink效果很多终端不支持,可以去掉:
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <Console name="CONSOLE" target="SYSTEM_OUT"> <PatternLayout pattern="%highlight{[%d{HH:mm:ss.SSS}] - %-5level - %msg%n}{FATAL=red, ERROR=red, WARN=yellow, INFO=cyan, DEBUG=green, TRACE=blue}"/> </Console> </Appenders> <Loggers> <Root level="ALL"> <AppenderRef ref="CONSOLE"/> </Root> </Loggers> </Configuration>
按照以上步骤修改后,重启项目应该就能看到不同级别日志的颜色区分了!
内容的提问来源于stack exchange,提问作者user2962142




