log4j2.xml未被找到,但是它在我的Eclipse项目中的类路径上

问题描述 投票:0回答:2

我有一个Eclipse Java项目,我们称它为'unittest',我正在尝试log4j2 + SLF4J,这似乎可以正常记录,但忽略了我的log4j2.xml。我明确地看到:错误StatusLogger找不到log4j2配置文件。使用默认配置:仅将错误记录到控制台。

项目文件结构是'test'是项目的源文件夹的位置

unittest/
   test/
       log4j2.xml
       com/blah/blah/etc...

我将log4j2.xml放在test /文件夹的根目录中。为项目定义的输出文件夹是unittets / bin目录。并且我验证在构建项目时在bin目录中创建了log4j2.xml。我现在不使用Maven,仅使用Eclipse。

这是我的测试代码:

public class LogManagerConfigTest {

    private static final org.slf4j.Logger slf4jLogger = LoggerFactory.getLogger(LogManagerConfigTest.class);

    @Test
    public void loggerTest() {
        //for troubleshooting No log4j2 configuration file found error only
        System.out.println("Looking for configuration on classpath:");
        URL resource = ClassLoader.getSystemResource("log4j2.xml"); 
        System.out.println("found"+String.valueOf(resource));

        slf4jLogger.trace("Trace message Test {}",1);
        slf4jLogger.trace("Trace message Test {}",2);

        slf4jLogger.debug("Debug message Test {}",1);
        slf4jLogger.debug("Debug message Test {}",2);

        slf4jLogger.info("Info message Test {}",1);
        slf4jLogger.info("Info message Test {}",2);

        slf4jLogger.error("Error message Test {}",1);
        slf4jLogger.error("Error message Test {}",2);

    }

}

我现在从log4j文档中获取的log4j2.xml的内容,我打算以后进行更改...

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Logger name="sandbox" level="trace" additivity="false">
      <AppenderRef ref="Console"/>
    </Logger>
    <Root level="error">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

在Eclipse中使用与我的Eclipse项目相同的类路径将其作为JUnit测试运行,输出如下:

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console. Looking for configuration on classpath:
found file:/C:/work/workspace/unittests/bin/log4j2.xml
12:39:43.969 [main] ERROR sandbox.LogManagerConfigTest - Error message Test 1 
12:39:43.971 [main] ERROR sandbox.LogManagerConfigTest - Error message Test 2

所以我不确定我缺少什么。类似的问题似乎没有直接答案,可以解决我的问题。

eclipse classpath log4j2 eclipse-classpath
2个回答
1
投票

问题解决了,然后消失了。我尝试过执行“项目”>“清理并清理单元测试项目”,但没有明显的效果。然后,当我添加所有内容后,尝试通过在项目'log4j2-test.xml'的同一文件夹中创建第二个xml文件来尝试解决方法。现在,如果我删除log4j2-test.xml,它似乎可以从log4j2.xml中读取,但是我没有做任何其他更改。所以有点奇怪,但不再是一个问题。


0
投票

Maven:请确保您的pom.xml在您的资源目录中包含所有xml文件,如下所示<resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.xml</include> ... any other includes .... </includes> </resource> </resources>然后清理(手动清理)并构建(手动打包)

© www.soinside.com 2019 - 2024. All rights reserved.