在log4j中,我需要使用
Logger.getLogger(MyClass.class);
我想知道MyClass.class的含义是什么?
答案 0 :(得分:4)
这是一个“类文字” - 一种获取代表MyClass
的{{3}}实例的方法。它将为您提供与在this.getClass()
类型的对象的实例方法中调用MyClass
相同的结果。
Java语言规范Class<T>
有更多细节:
类文字是一个表达式,由类,接口,数组或基本类型的名称或伪类型void组成,后跟
.
和标记类。类文字的类型,C.Class,其中C是类,接口或数组类型的名称,是Class<C>
。如果p是基本类型的名称,则让B为装箱转换后的类型p的类型(第5.1.7节)。那么p.class的类型是Class<B>
。 void.class的类型是Class。类文字求值为指定类型(或void)的Class对象,由当前实例的类的定义类加载器定义。
答案 1 :(得分:1)
.class
是一个返回类本身的运行时实例的属性。您可以在What is a class literal in Java?中找到更多信息。
在log4j中,可以为不同的类配置不同的记录器,因此当您使用该类实例化记录器时,可以为每个类控制日志级别,appender和其他配置。
答案 2 :(得分:0)
Logger.getLogger(MyClass.class)
用于获取类的全名(例如“com.you.package.MyClass”),该字符串用于配置此Logger对象。
Log4j使用层次结构来确定对给定记录器要做什么,而更具体的指令(比如“com.you.package”)会覆盖更高版本的指令(例如“com.you”)。有关详细信息,请参阅配置文件。