log4j列印異常資訊,未列印堆疊

2021-10-12 07:39:42 字數 1743 閱讀 2484

使用logger.error方法時只能列印出異常型別,無法列印出詳細的堆疊資訊,使得定位問題變得困難和不方便。

logger類下有多個不同的error方法,根據傳入引數的個數及型別的不同,自動選擇不同的過載方法。

當error(object obj)只傳入乙個引數時會將異常物件作為object使用,並最終當做string列印出來,當使用兩個引數error(string message, throwable t),且第二個引數為throwable時,才會將完整的異常堆疊列印出來。

import org.apache.logging.log4j.logmanager;

import org.apache.logging.log4j.logger;

public

class

testlogerror

;int outboundint = array[5]

;}catch

(exception e)

: ", e)

;// 嘗試使用分隔符,第二個引數為object,會發現分隔符起作用了,根據第二個引數的不同型別,呼叫不同的過載方法

logger.

error

("第二個引數為object,使用分隔符列印 {} "

,123);}}}

資訊輸出:

根據方法過載特性,當只輸入乙個引數時,此物件會被當做object進行列印輸出,如果是exception e的話,這裡直接就tostring()。

/**

* logs a message object with the level.

* * @param message the message object to log.

*/void

error

(object message)

;

根據方法過載特性,當第二個引數為throwable時,會列印出異常資訊,並且包含異常堆疊資訊。

/**

* logs a message at the level including the stack trace of the

*tpassed as parameter.

* * @param message the message object to log.

* @param t the exception to log, including its stack trace.

*/void

error

(string message, throwable t)

;

根據方法過載特性,當第二個引數為object時,會根據佔位符進行替換並列印出錯誤日誌。

/**

* logs a message with parameters at error level.

* * @param message the message to log; the format depends on the message factory.

* @param p0 parameter to the message.

*/void

error

(string message, object p0)

;

Log4j 列印堆疊資訊

我的理解當然很簡單,e.printstacktrace 是在控制台輸出來的,logger4j是在日誌中輸出來的。後來同事打了個啞謎還有乙個是關係到buffer上的區別,對於這點其實我還是沒有怎麼搞明白,有知道的小夥伴可以來解答下。2.logger.error exception 和logger.er...

log4j實現自動列印所有異常資訊

因為最近工作中經常用到log4j2檢視日誌,所以昨天把log4j2的內容又好好看了一下。log4j2記錄日誌資訊只要log.info 將需要的資訊記錄就好了,用起來非常方便。但考慮到只要程式中有異常,就要將異常記錄,所以我們無法手動的將所有異常資訊通過log.info 記錄 除非每步操作都要捕獲異常...

log4j列印錯誤異常的詳細堆疊資訊

使用logger.error方法時只能列印出異常型別,無法列印出詳細的堆疊資訊,使得定位問題變得困難和不方便。logger類下有多個不同的error方法,根據傳入引數的個數及型別的不同,自動選擇不同的過載方法。當error object obj 只傳入乙個引數時會將異常物件作為object使用,並最...