Log4J2不输出调试信息 [英] Log4J2 not outputting debug information

查看:31
本文介绍了Log4J2不输出调试信息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经安装了log4j2并设置了一个属性文件,但无法将log4j2输出的调试信息获取到控制台.我怀疑我的配置错误.

I've installed log4j2 and set up a properties file, yet I can't get log4j2 output debug information to the console. I'm suspecting my configuration is wrong.

这是我的源代码:

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配置文件:

And here's my log4j2 configuration file:

<?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 时,我可以看到输出.

Log4J2 works, as I'm able to see output when I set logger.debug to logger.error.

我可能缺少一些琐碎的东西.

I'm probably missing something trivial.

我已将属性文件更新为

<?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的输出:

Changing Configuration level to trace also didn't produce any further output. Still, when I change logger.debug to logger.error, I can see log4j2 output:

但是当我将内容设置为logger.debug时什么也没有:

But nothing when I set things to logger.debug:

推荐答案

似乎您的 log4j2 配置文件没有被使用.如果没有 log4j2 配置,则默认情况下, Root Logger 打印 ERROR 级别的日志,这就是您的情况.

It seems your log4j2 configuration file is not getting used. If there is no log4j2 configuration, By default, Root Logger prints ERROR level logs and that is what happening in your case.

您的 log4j2 配置文件必须放置在应用程序的直接 classpath 中,并且文件名必须为 log4j2.xml .如果它是一个Maven项目,则应将文件放置在/src/main/resources/log42.xml

Your log4j2 configuration file must be placed in direct classpath of the application and name of the file must be log4j2.xml. If it is a maven project, your file should be placed at /src/main/resources/log42.xml

这篇关于Log4J2不输出调试信息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆