Log4J 1.2 文档中的奇怪转换
Strange cast in Log4J 1.2 docs
我正在浏览 Log4J 文档,在 Logger#setLevel()
(继承自 Category
)方法的描述中偶然发现以下内容:
If you are passing any of Level.DEBUG
, Level.INFO
, Level.WARN
,
Level.ERROR
, Level.FATAL
as a parameter, you need to case them as
Level
. As in
logger.setLevel((Level) Level.DEBUG);
这样的要求背后有什么原因吗?
我是不是漏掉了什么?
这似乎是在 1.2 版本中添加 Category.setPriority()
was deprecated and 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 中。显然,文档没有意义,因为不需要强制转换。
我正在浏览 Log4J 文档,在 Logger#setLevel()
(继承自 Category
)方法的描述中偶然发现以下内容:
If you are passing any of
Level.DEBUG
,Level.INFO
,Level.WARN
,Level.ERROR
,Level.FATAL
as a parameter, you need to case them asLevel
. As inlogger.setLevel((Level) Level.DEBUG);
这样的要求背后有什么原因吗?
我是不是漏掉了什么?
这似乎是在 1.2 版本中添加 Category.setPriority()
was deprecated and 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 中。显然,文档没有意义,因为不需要强制转换。