LoggerFactory.getLogger(String name)用法
阿新 • • 發佈:2019-02-13
public static Logger getLogger(String name)用法
1.使用指定類初始化日誌物件
在日誌輸出的時候,可以打印出日誌資訊所在的類,如下:
Logger logger = LoggerFactory.getLogger(com.User.class);
logger.debug("使用者資訊");
將會打印出: com.User : 使用者資訊
2.看原始碼:
LoggerFactory中的getLogger方法,返回一個以name命名的靜態繫結的例項,
而這個name一般以Logger例項所在的類命名,如通過類名.Class.getName()獲取。
public static Logger getLogger(String name) {
ILoggerFactory iLoggerFactory = getILoggerFactory();
return iLoggerFactory.getLogger(name);
}
ILoggerFactory的介面例項在編譯時內部繫結LoggerFactory,這個介面中只有一個public Logger getLogger(String name)方法,根據引數名稱返回適當的例項
看看這個getILoggerFactory()方法.
public static ILoggerFactory getILoggerFactory () {
if (INITIALIZATION_STATE == UNINITIALIZED) {
INITIALIZATION_STATE = ONGOING_INITIALIZATION;
performInitialization();
}
switch (INITIALIZATION_STATE) {
case SUCCESSFUL_INITIALIZATION:
return StaticLoggerBinder.getSingleton().getLoggerFactory();
case NOP_FALLBACK_INITIALIZATION:
return NOP_FALLBACK_FACTORY;
case FAILED_INITIALIZATION:
throw new IllegalStateException(UNSUCCESSFUL_INIT_MSG);
case ONGOING_INITIALIZATION:
// support re-entrant behavior.
// See also http://bugzilla.slf4j.org/show_bug.cgi?id=106
return TEMP_FACTORY;
}
throw new IllegalStateException("Unreachable code");
}
這是返回ILoggerFactory的例項,用於調取getLogger方法。
在Logger介面中規定了日誌的輸出的方法,根據相應的引數需要設定
就可以在控制檯看到輸出的日誌資訊了。