鍍金池/ 問(wèn)答/Java  網(wǎng)絡(luò)安全/ slf4j為什么用{}而不是%s

slf4j為什么用{}而不是%s

%s是基本庫(kù)內(nèi)置,而且格式化也更好:
logger.info("param1: %s, param2: %d{yyyy-MM-dd}", "", new Date());
logger.info("param1: {}, param2: {}", "", Formatter.format(new Date(), "yyyy-MM-dd"));
明顯第一個(gè)更好

回答
編輯回答
雨蝶

你為什么覺(jué)得第一個(gè)好用呢?

2018年8月3日 13:17
編輯回答
怣痛

你的意思是:

logger.info(String.format("param1: %s, param2: %d{yyyy-MM-dd}", "", new Date()));
//vs
logger.info("param1: {}, param2: {}", "", Formatter.format(new Date(), "yyyy-MM-dd"));

當(dāng)然第二種,因?yàn)榈诙N可以在日志級(jí)別大于info的時(shí)候,直接不去拼接字符串
但是雖然沒(méi)有拼接字符串,但是Formatter.format(new Date(), "yyyy-MM-dd"))還是執(zhí)行了
這就是在一些框架里經(jīng)常看到的代碼的原因

if(logger.enableInfo()){
    logger.info(...);
}
2018年9月3日 17:42
編輯回答
失心人

有人對(duì)這個(gè)問(wèn)題有什么研究的嗎?代碼潔癖,急

2017年12月21日 05:56