我有一个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
所以我ñ确信我缺少什么。类似的问题似乎没有直接的答案,可以解决我的问题。