Log4j2 记录到文件和 IDE 但不是当 运行 来自 CLI

Log4j2 logs to file and in IDE but not when run from CLI

我通常会尝试自己解决问题,而且大部分时间它都能正常工作,但我受困于此,所以请帮忙。这似乎是一件容易的事,但最终却是一件令人头疼的事。 所以问题是当从 CLI 运行ning mvn test 时没有日志行输出到控制台。当我 运行 我从 IDE 进行的测试以及将日志写入文件时,在这两种情况下都可以正常工作。尝试了不同的东西,但总是得到相同的结果 下面是我的 log4j 配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="debug" name="MainConfiguration">
<Properties>
    <Property name="logFileDirectory">target/logs</Property>
</Properties>

<Appenders>
    <Console name="Console" target="SYSTEM_OUT">
        <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss.SSS} [%t - %tid] %-5level %logger{36} - %msg%n"/>
    </Console>

    <RollingFile name="File" fileName="${logFileDirectory}/test.log"
                 filePattern="${logFileDirectory}/archive/logs/test_%d{yyyy-MM-dd_HH}.log">
        <PatternLayout>
            <pattern>%d{dd/MM/yyyy HH:mm:ss} %-5p [%t - %tid] [%c{1}] %m%n</pattern>
        </PatternLayout>
        <Policies>
            <OnStartupTriggeringPolicy />
            <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
            <SizeBasedTriggeringPolicy size="10 MB"/>
        </Policies>
        <DefaultRolloverStrategy max="20"/>
    </RollingFile>
</Appenders>

<Loggers>
    <Root level="debug">
        <AppenderRef ref="File"/>
        <AppenderRef ref="Console"/>
    </Root>
</Loggers>

更新:lo4j2.xml 位于 src/main/resources。尝试在src/test/resources中添加一个log4j2-test.xml,结果没有变化。另外,我的所有代码都与测试相关,所以它在 src/test/java 中。为了以防万一,这是我的 pom 中的两个依赖项:

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.8.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.8.1</version>
    </dependency>

谢谢!

好吧,我觉得很蠢,但无论如何......在反复检查 pom 和配置文件后,意识到 maven surefire 插件被配置为将测试输出重定向到文件。错过如此明显的事情,我唯一的安慰是我不是自己写的。但是,还是浪费了很多时间...这是错误的地方:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.12.4</version>
            <configuration>
                <parallel>classes</parallel>
                <threadCount>10</threadCount>
                <redirectTestOutputToFile>true</redirectTestOutputToFile>
            </configuration>
        </plugin>