Я не могу заставить Log4j 2 войти в консоль. При работе с градиентом ничего не появляется.
log4j2.xml
в корневом каталоге проектов:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="ALL">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="all">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
Использование в моих классах:
public class ABCHandler {
private final Logger logger = LogManager.getLogger();
public ABC(String serialPortName) {
logger.info("Opening serial port {}", serialPortName);
}
}
Загрузка вашего файла и конфигураций на моей машине.
Это был класс, который я использовал:
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class Test
{
private final Logger logger = LogManager.getLogger(Test.class);
public Test(String serialPortName) {
System.out.println(logger.isInfoEnabled());
logger.entry();
logger.info("info! {}", serialPortName);
logger.error("error! {}", serialPortName);
logger.debug("debug! {}", serialPortName);
}
public static void main(String args[])
{
Test h1 = new Test("1001");
}
}
Это log4j2.xml:
<ThresholdFilter level="all"/>
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d %-5p method: [%t] %C{2} (%F:%L) - %m%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="all">
<AppenderRef ref="STDOUT"/>
</Root>
</Loggers>
и, наконец, это результат:
true 2014-05-29 12:19:15,266 TRACE method: [main] Test (Test.java:10) - entry 2014-05-29 12:19:15,268 INFO method: [main] Test (Test.java:11) - info! 1001 2014-05-29 12:19:15,269 ERROR method: [main] Test (Test.java:12) - error! 1001 2014-05-29 12:19:15,269 DEBUG method: [main] Test (Test.java:13) - debug! 1001
Одной из распространенных ошибок при использовании Log4j2 является размещение файла log4j2.xml в файле, который не находится в пути к классам.
Чтобы диагностировать, если это проблема, измените строку
logger.info("Opening serial port {}", serialPortName);
в
logger.error("Opening serial port {}", serialPortName);
Если вы видите какой-либо вывод, это потому, что log4j не может загрузить ваш файл. Это связано с тем, что уровень журнала по умолчанию, когда файл не найден, - ERROR, а не DEBUG.
Расположение log4j2.xml в моем проекте (Maven) находится в src/main/resources, который, как я знаю, находится в моем пути к классам.