我確信這是一個簡單的修復(fù),但我一生都無法弄清楚為什么。我收到隨機 NPE 并讓 log4j (2.0.2) 記錄錯誤,但是盡管%ex我的 log4j 配置文件中有 ,但它不打印任何堆棧跟蹤。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>爪哇:try { //<Many sequential class calls>} catch (Exception e) { log4j.error(e);}
1 回答

慕森王
TA貢獻1777條經(jīng)驗 獲得超3個贊
您實際上log4j.error(e)
正在調(diào)用info(Object message)
不需要額外注意的方法Exception
。
但是,要打印堆棧跟蹤,您需要Throwable
單獨調(diào)用處理(異常的超類)的變體之一。最簡單的方法之一可能是info(CharSequence arg0, Throwable arg1)
.
例如,您可以簡單地將 catch 塊中的行更改為:
log4j.error("", e);
添加回答
舉報
0/150
提交
取消