Log4J2 не выводит отладочную информацию - PullRequest
0 голосов
/ 07 мая 2018

Я установил log4j2 и настроил файл свойств, но не могу получить отладочную информацию log4j2 на консоль. Я подозреваю, что моя конфигурация неверна.

Вот мой исходный код:

package com.smt.trimble.poc;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class NMEAReader {

      private static final String hostName = "192.168.0.2";
      private static final int portNumber = 5017;
      private static Socket nmeaSocket;

      private static final Logger logger = LogManager.getLogger(NMEAReader.class);


      public static void main(String[] args) {

        try {

        nmeaSocket = new Socket(hostName, portNumber);
        logger.debug("Creating socket");
        PrintWriter out = new PrintWriter(nmeaSocket.getOutputStream(), true);
        BufferedReader in = 
          new BufferedReader(new InputStreamReader(nmeaSocket.getInputStream()));

        String userInput;

        while (true) {
            logger.debug("Reading Data");
            userInput = in.readLine();
            out.println(userInput);
            System.out.println("echo: " + in.readLine());
        }


    } catch (Exception e){
        System.out.println("An error occured, " + e.getMessage());
    }
}

}

А вот мой файл конфигурации log4j2:

<?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>
    <Root level="Debug">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>

Log4J2 работает, так как я могу видеть вывод, когда я установил logger.debug в logger.error.

Я, наверное, упускаю что-то тривиальное.

редактирование:

Я обновил файл свойств до

<?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="trace">
      <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
          <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-level %logger{36} - %msg%n"/>
          <Filters>
            <ThresholdFilter level="debug"/>
          </Filters>
        </Console>
      </Appenders>
      <Loggers>
        <Root level="Debug">
          <AppenderRef ref="Console"/>
        </Root>
      </Loggers>
  </Configuration>

Изменение уровня конфигурации для трассировки также не привело к дальнейшему выводу. Тем не менее, когда я изменяю logger.debug на logger.error, я вижу вывод log4j2:

enter image description here

Но ничего, когда я установил logger.debug:

enter image description here

1 Ответ

0 голосов
/ 10 мая 2018

Кажется, ваш log4j2 файл конфигурации не используется. Если конфигурация log4j2 отсутствует, по умолчанию Root Logger печатает журналы уровня ERROR, что и происходит в вашем случае.

Ваш файл конфигурации log4j2 должен быть помещен непосредственно в classpath приложения, а имя файла должно быть log4j2.xml. Если это проект Maven, ваш файл должен быть помещен в /src/main/resources/log42.xml

...