You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在IntelliJ中实现Log4j2控制台输出按级别着色?配置无效求助

解决Log4j2控制台日志无颜色输出的问题

嘿,我帮你排查下控制台日志不显示颜色的问题,主要有几个关键点需要修正:

1. 核心问题:API与配置文件版本不兼容

你代码里用的是Log4j 1.x的APIorg.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

火山引擎 最新活动