我有一个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
所以我不确定我错过了什么。类似的问题似乎没有直接的答案,这解决了我的问题。
答案 0 :(得分:1)
问题自行解决并消失了。我曾尝试做过Project&gt;清洁和清洁unittest项目没有明显效果。然后通过在项目'log4j2-test.xml'的同一文件夹中创建第二个xml文件来尝试解决方法,只要我添加了所有工作。现在,如果我删除了log4j2-test.xml,它似乎正在从log4j2.xml中读取,但我没有改变任何其他内容。所以有点奇怪,但不再是问题。
答案 1 :(得分:0)
Maven:确保您的pom.xml在您的资源目录中包含所有xml文件,如下所示:
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
... any other includes ....
</includes>
</resource>
</resources>`
然后清理(MVN清理)并生成(MVN软件包) Eclipse将在此之后遵守!