У меня есть проект Eclipse Java, давайте назовем его «unittest», и я пробую log4j2 + SLF4J, он, кажется, нормально регистрируется, но игнорирует мой log4j2.xml. Я явно вижу: ОШИБКА StatusLogger Не найден файл конфигурации log4j2. Использование конфигурации по умолчанию: запись в консоль только ошибок.
Структура файла проекта — это где «test» — это исходная папка для проекта.
unittest/
test/
log4j2.xml
com/blah/blah/etc...
Я положил log4j2.xml в корень папки test/. Выходная папка, определенная для проекта, — это каталог unittets/bin. И я проверяю, что log4j2.xml создается в каталоге bin при создании моего проекта. Я не использую 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);
}
}
Содержимое log4j2.xml я пока взял из документации log4j, позже планирую изменить...
<?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>
Запустив это как тест JUnit в Eclipse, используя тот же путь к классам, что и мой проект Eclipse, вы получите следующий результат:
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
Поэтому я не уверен, что мне не хватает. Подобные вопросы, похоже, не имеют прямого ответа, что решает мою проблему.