Log4j2 не входит в консоль

1

Я не могу заставить 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);
    }
}
  • 0
    Вы должны указать класс, который вы хотите войти, LogFactory.getLogger (ABCHandler.class)
  • 1
    По умолчанию это будет текущий класс. Смотрите ths Log4j 2 API для более подробной информации.
Теги:
logging
log4j2

1 ответ

3
Лучший ответ

Загрузка вашего файла и конфигураций на моей машине.

Это был класс, который я использовал:

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, который, как я знаю, находится в моем пути к классам.

  • 2
    «Одна из распространенных ошибок при использовании Log4j2 - размещение файла log4j2.xml в файле, который отсутствует в пути к классам». Это было это ...
  • 0
    Всегда забывая об этом

Ещё вопросы

Сообщество Overcoder
Наверх
Меню