Java堆栈跟踪未使用log4j2打印
我相信这是一个简单的解决办法,但我一辈子都不知道为什么。我得到随机NPE,并让log4j(2.0.2)记录错误,但是尽管在我的log4j配置文件中有Java堆栈跟踪未使用log4j2打印,java,log4j2,Java,Log4j2,我相信这是一个简单的解决办法,但我一辈子都不知道为什么。我得到随机NPE,并让log4j(2.0.2)记录错误,但是尽管在我的log4j配置文件中有%ex,但它不会打印堆栈跟踪 11-01-2019 02:39:33.212[Thread-307]错误AlarmParse.ProcessAlarm:java.lang.NullPointerException- Log4j2配置文件: <?xml version="1.0" encoding="UTF-8"?> <configu
%ex
,但它不会打印堆栈跟踪
11-01-2019 02:39:33.212[Thread-307]错误AlarmParse.ProcessAlarm:java.lang.NullPointerException-
Log4j2配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration monitorInterval="30" status="INFO">
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg - %ex%n"/>
</Console>
<File name="MyFile" fileName="G:/iMCAlarmParse/logs/AppLog.log">
<PatternLayout pattern="%d{MM-dd-yyyy HH:mm:ss.SSS} [%t] %-5level %c{2}: %msg - %ex%n"/>
</File>
爪哇:
试试看{
//
}捕获(例外e){
log4j.错误(e);
}
通过log4j.error(e)
您实际调用的是info(Object message)
方法,该方法不会额外处理异常
但是,要打印堆栈跟踪,您需要调用其中一个变量,分别处理Throwable
(异常的超类)。最简单的方法之一是info(CharSequence arg0,Throwable arg1)
例如,您只需将catch块中的行更改为:
log4j.error("", e);
令人惊叹的。我已经重新编译并将JAR部署到服务器上。现在我们等待……)太好了,谢谢。堆栈跟踪似乎有点短,但它标识了失败的类。请尝试%ex{full}
获取堆栈跟踪。
log4j.error("", e);