我正在查看Log4J文档,并在Logger#setLevel()
(继承自Category
)方法的描述中偶然发现以下内容:
如果您通过
Level.DEBUG
,Level.INFO
,Level.WARN
中的任何一个,Level.ERROR
,Level.FATAL
作为参数,您需要将它们视为Level
。如在logger.setLevel((Level) Level.DEBUG);
这种要求背后有什么理由吗?
我在这里错过了什么吗?
答案 0 :(得分:2)
这似乎是在弃用Category.setPriority()
并在1.2版本中添加Category.setLevel()
时引入的文档错误。
这是setPriority
方法最初在jakarta-log4j-1.1.3
中的显示方式:
/**
Set the priority of this Category.
<p>Null values are admitted.
*/
public void setPriority(Priority priority) {
this.priority = priority;
}
查看log4j-1.2.17
中setPriority
的来源,我们可以看到,当该方法被弃用时,添加了缩小到Level
的广告位:
/**
Set the level of this Category.
<p>Null values are admitted.
@deprecated Please use {@link #setLevel} instead.
*/
public void setPriority(Priority priority) {
this.level = (Level) priority;
}
因此,似乎setPriority
的实现细节以某种方式滑入了新setLevel
方法的JavaDocs。显然,文档没有意义,因为不需要强制转换。