需求:打印error時(shí),既想打印帶參數(shù)的字符串女揭,也想打印異常堆棧信息
Answer:只需調(diào)用log.error格式化字符串,并且把堆棧信息參數(shù)e放到最后一個(gè)即可
@Slf4j
public class LogTest {
@Test
public void testLog() {
String s = "Hello world";
try {
Integer i = Integer.valueOf(s);
} catch (NumberFormatException e) {
// 異常堆棧必須是最后一個(gè)參數(shù)
log.error("Failed to format {}", s, e);
// log.error("Failed to format {}", e, s);
}
}
}
Why?
跟隨debug的腳步盛垦,我們會(huì)來(lái)到下面這個(gè)方法內(nèi)部:
顯而易見(jiàn),當(dāng)判斷傳入的格式化參數(shù)數(shù)組的最后一個(gè)參數(shù)繼承自Throwable類時(shí)妇垢,就會(huì)將其識(shí)別出堆棧信息供打印日志
github:https://github.com/xdlkc