You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在IntelliJ中为JUnit单元测试自定义Log4j日志配置遇阻

问题:JUnit单元测试中Log4j Info日志无法输出

在IntelliJ的默认Maven项目中,尝试配置src/test/java下JUnit的Log4j日志,将配置文件放在src/test/resources(IntelliJ自动识别为Maven资源目录),也试过放在test和src根目录,但均无效。

单元测试代码

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.junit.Test;

public class LogTest {
    private static Logger log = LogManager.getLogger(LogTest.class);

    @Test
    public void printLogs() {
        log.info("Hello world from log.info!");
        log.error("Hello world from log.error!");
    }
}

配置文件(src/test/resources/log4j.properties)

log4j.rootLogger=ALL

实际输出

00:48:19.766 [main] ERROR LogTest - Hello world from log.error!
Process finished with exit code 0


问题原因及解决办法

核心问题

你使用的是Log4j 2.x的API(导入的是org.apache.logging.log4j包),但配置文件用了Log4j 1.x的语法(log4j.rootLogger),两者完全不兼容。同时Log4j 2.x默认不识别log4j.properties作为配置文件,需要命名为log4j2.properties。

解决步骤

  1. 重命名配置文件:将src/test/resources下的log4j.properties改名为log4j2.properties。
  2. 使用Log4j 2.x语法配置:替换为以下基础配置(可根据需求调整):
    status = error
    name = TestLogConfig
    
    # 控制台输出配置
    appender.console.type = Console
    appender.console.name = STDOUT
    appender.console.layout.type = PatternLayout
    appender.console.layout.pattern = %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
    
    # 根日志级别及输出目标
    rootLogger.level = all
    rootLogger.appenderRefs = stdout
    rootLogger.appenderRef.stdout.ref = STDOUT
    
  3. 确认依赖版本一致:确保pom.xml中log4j-api和log4j-core版本匹配,示例依赖:
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
        <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. 重新运行测试:此时info级别的日志会正常输出。

内容的提问来源于stack exchange,提问作者tresf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 07:52:49