在 log4j 中,为什么 "OFF" 是最高的日志记录级别?

In log4j, why is "OFF" the highest logging level?

我一直在努力直观地理解 Log4J 级别。

It says that :

OFF has the highest possible rank and is intended to turn off logging.

关闭最高级别有什么意义?我宁愿认为 DEBUGALL 是最高的,即产生 most 数据的水平。

谢谢!

Samudra Gupta 在他的书 Pro Apache Log4j, Second Edition 1 中说(重点是我的):

The levels have unique integer values attached to them and are arranged in the preceding list from lowest to highest value.

在内部为每个级别分配一个整数值:

Level   Int Value
-----   ----------------- 
ALL     Integer.MIN_VALUE
TRACE   5000
DEBUG   10000
INFO    20000
WARN    30000
ERROR   40000
FATAL   50000
OFF     Integer.MAX_VALUE

考虑以下方法:

public void info(Object message, Throwable t) {
    if (repository.isDisabled(Level.INFO_INT))
        return;
    if (Level.INFO.isGreaterOrEqual(this.getEffectiveLevel()))
        forcedLog(FQCN, Level.INFO, message, t);
}

第一个if验证阈值。如果级别大于或等于阈值,它将被写入日志。例如如果阈值为 INFO,则 ERROR > INFOTRACE < INFO。所以TRACE就不写了

第二个if验证记录器的级别。例如如果logger的级别是OFFERROR < OFF,那么ERROR不会被写入。

因此,具有高值的级别将不允许具有较小值的级别写入日志。 OFF 的排名最高 (Integer.MAX_VALUE)。

另一种查看方式,如 Wikipedia says 所示,是严重程度。 OFF 的严重性级别最高。


注释

  1. Samudra Gupta,"Understanding Apache log4j" in Pro Apache Log4j,第二版(加利福尼亚州伯克利:Apress,2005 年),24。