后面的.class有什么作用?
Logger.getLogger(Class clazz) 语法
**.class是将你要加入日志的类加进入 假如你的myclass这个类需要加日志信息就在
private static Logger logger = Logger.getLogger(myclass.class);
这是获取一个myclass类的logger myclass内定义的日志信息就能够显示出来了
就是得到MstNinushiAction的Class类型对象,因为Logger.getLogger方法需要传入Class类型对象,这样该logger的信息中会详细体现出是哪个路径的哪个类的日志。
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接口中规定了日志的输出的方法,根据相应的参数需要设置
就可以在控制台看到输出的日志信息了。
参考:https://blog.youkuaiyun.com/huangxingchen123/article/details/52193648