Log4J 1.2文档中的奇怪演员

时间:2015-09-21 23:44:35

标签: java log4j

我正在查看Log4J文档,并在Logger#setLevel()(继承自Category)方法的描述中偶然发现以下内容:

  

如果您通过Level.DEBUGLevel.INFOLevel.WARN中的任何一个,   Level.ERRORLevel.FATAL作为参数,您需要将它们视为   Level。如在

logger.setLevel((Level) Level.DEBUG);

这种要求背后有什么理由吗?

我在这里错过了什么吗?

1 个答案:

答案 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.17setPriority的来源,我们可以看到,当该方法被弃用时,添加了缩小到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。显然,文档没有意义,因为不需要强制转换。