使用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時,會列印出異常資訊,並且包含異常堆疊資訊。
根據方法過載特性,當第二個引數為object時,會根據佔位符進行替換並列印出錯誤日誌。/**
passed as parameter.* logs a message at the level including the stack trace of the
*t
* * @param message the message object to log.
* @param t the exception to log, including its stack trace.
*/void
error
(string message, throwable t)
;
/**
* 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使用,並最...