2 回答

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以為此單獨(dú)格式化消息,但我必須為它編寫一個(gè)輔助方法:
public void logException(Exception ex, String fmt, Object... args) {
Message msg = log.getMessageFactory().newMessage(fmt, args);
log.error(msg, ex);
}

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
實(shí)際上,幾乎所有接受消息和參數(shù)的 log4j 日志記錄方法也接受 Throwable。自第一個(gè)版本以來,您一直能夠做到:
logger.error("Error removing token for account {}", account, ex);
請(qǐng)注意,格式字符串只有一個(gè)參數(shù),因此最后的 throwable 被記錄為附加到消息的異常。這就是 ParameterizedMessage 類的工作方式。
此外,Log4j 2.13.0 中添加了對(duì) LogBuilder 的支持,允許您執(zhí)行
logger.atError().withException(ex).log("Error removing token for account {}", account);
這更清楚一點(diǎn)。請(qǐng)注意,將調(diào)用以下所有方法,但如果未記錄錯(cuò)誤級(jí)別,則 atError() 之后的所有方法都是無操作的。
添加回答
舉報(bào)