org.slf4j.Logger中info()方法的使用詳解
org.slf4j.Logger中info()方法
如果info()方法參數為以下類型
public void info(String format, Object argArray[]) { if(logger.isInfoEnabled()) { FormattingTuple ft = MessageFormatter.arrayFormat(format, argArray); logger.log(FQCN, Level.INFO, ft.getMessage(), ft.getThrowable()); } }
使用范例1
private final Logger log = LoggerFactory.getLogger(getClass()); log.info("backlog={}", new Object[]{backlog});//backlog為Java對象,可重寫toString()方法來實現輸出具體屬性
輸出如下:
backlog=Backlog [backlogId=null, employeeId=36, backlogHead=Test, backlogBody=時間:2016-10-1,地點:二樓四號會議室, createDate=Tue Nov 01 16:44:03 CST 2016, scheduledDate=Mon Feb 01 16:44:03 CST 2016]
使用范例2
private final Logger log = LoggerFactory.getLogger(getClass()); log.info("add Backlog -> employeeId={}, backlogHead={}, scheduledDate={}", new Object[]{ backlog.getEmployeeId(), backlog.getBacklogHead(), backlog.getScheduledDate()});
輸出如下:
add Backlog -> employeeId=36, backlogHead=Test, scheduledDate=Mon Feb 01 16:44:03 CST 2016]
如果info()方法參數如下
public void info(String msg) { logger.log(FQCN, Level.INFO, msg, null); }
使用范例1
log.info("backlog=" + backlog);
輸出結果:
backlog=Backlog [backlogId=null, employeeId=36, backlogHead=Test, backlogBody=時間:2016-10-1,地點:二樓四號會議室, createDate=Tue Nov 01 16:44:03 CST 2016, scheduledDate=Mon Feb 01 16:44:03 CST 2016]
如果info()方法參數如下
public void info(String format, Object arg) { if(logger.isInfoEnabled()) { FormattingTuple ft = MessageFormatter.format(format, arg); logger.log(FQCN, Level.INFO, ft.getMessage(), ft.getThrowable()); } }
使用范例1
log.info("delete backlog -> backlogId={}", backlogId);
輸出如下:
delete backlog -> backlogId=69
總結:如果第二個參數是Object,則第一個String參數裡要有”{}”對應,如果是Object[]數組,數組裡有幾個對象,前面的String參數就要有幾個{}花括號對應。
log.info()傳入多個參數的方法
不知道項目裡用的是啥 ** 版本的 log4j
居然不能傳入變長參數
logger.info(String.format("%s %s %s", username, feature, "1111"));
隻好采用這種方式啦
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Mybatis日志模塊的適配器模式詳解
- 如何在不使用spring框架中使用aop的功能
- 圖文詳解SpringBoot中Log日志的集成
- 手把手教你從零設計一個java日志框架
- 詳解記錄Java Log的幾種方式