2016-01-06 103 views
0

我有一个Eclipse Java项目,我们称其为'unittest',然后尝试log4j2 + SLF4J它似乎记录正常,但忽略我的log4j2.xml。我明确地看到: 错误StatusLogger未找到log4j2配置文件。使用默认配置:仅将错误记录到控制台。未找到log4j2.xml,但它位于我的Eclipse项目的类路径中

项目文件结构就是“测试”是项目

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

我把log4j2.xml测试/文件夹的根目录下的源文件夹。为项目定义的输出文件夹是unittets/bin目录。我在构建项目时验证log4j2.xml是在bin目录中创建的。我现在不使用Maven,只是Eclipse。

这里是我的测试代码:我从log4j文档了对于现在的log4j2.xml的

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); 

    } 

} 

内容,我打算以后更改...

<?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 

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

回答

1

问题自行解决并消失。我试图做项目>清理和清理unittest项目没有明显的影响。然后通过在项目'log4j2-test.xml'的同一个文件夹中创建第二个xml文件来尝试一种解决方法,只要我添加了这一切工作。现在,如果我删除了log4j2-test.xml,它看起来好像是从log4j2.xml中读取的,但我没有改变任何其他东西。所以有点奇怪,但不再是问题。

相关问题