使用logger.error方法時只能列印出異常型別,無法列印出詳細的堆疊資訊,使得定位問題變得困難和不方便。
logger類下有多個不同的error方法,根據傳入引數的個數及型別的不同,自動選擇不同的過載方法。
當error(object obj)只傳入乙個引數時會將異常物件作為object使用,並最終當做string列印出來,當使用兩個引數error(string message, throwable t),且第二個引數為throwable時,才會將完整的異常堆疊列印出來。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import
org.apache.logging.log4j.logmanager;
import
org.apache.logging.log4j.logger;
/**
* @author: leechao
* @date: 2018/7/25
* @describe:
* @modified by:
*/
public
class
testlogerror ;
int
outboundint = array[
5
];
}
catch
(exception e) : "
, e);
// 嘗試使用分隔符,第二個引數為object,會發現分隔符起作用了,根據第二個引數的不同型別,呼叫不同的過載方法
logger.error(
"第二個引數為object,使用分隔符列印 {} "
,
123
);
}
}
}
資訊輸出:
根據方法過載特性,當只輸入乙個引數時,此物件會被當做object進行列印輸出,如果是exception e的話,這裡直接就tostring()。 1
2
3
4
5
6
/**
* logs a message object with the level.
*
* @param message the message object to log.
*/
void
error(object message);
根據方法過載特性,當第二個引數為throwable時,會列印出異常資訊,並且包含異常堆疊資訊。 1
2
3
4
5
6
7
8
/**
* logs a message at the level including the stack trace of the
*t
passed 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時,會根據佔位符進行替換並列印出錯誤日誌。 1
2
3
4
5
6
7
/**
* 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記錄詳細異常資訊
片斷,其中log為log4j物件,ex為異常物件 方法1 利用異常類提供的printstacktrace printwriter s 函式。stringwriter sw new stringwriter printwriter pw new printwriter sw ex.printstack...
log4j列印異常資訊,未列印堆疊
使用logger.error方法時只能列印出異常型別,無法列印出詳細的堆疊資訊,使得定位問題變得困難和不方便。logger類下有多個不同的error方法,根據傳入引數的個數及型別的不同,自動選擇不同的過載方法。當error object obj 只傳入乙個引數時會將異常物件作為object使用,並最...
log4j詳細配置
conversionpattern引數的格式含義 格式名 含義 c 輸出日誌資訊所屬的類的全名 d 輸出日誌時間點的日期或時間,預設格式為iso8601,也可以在其後指定格式,比如 d,輸出類似 2002 10 18 22 10 28 f 輸出日誌資訊所屬的類的類名 l 輸出日誌事件的發生位置,即輸...