Log4J2不输出调试信息 [英] Log4J2 not outputting debug information
问题描述
我已经安装了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屋!