我一直在努力直观地理解Log4J级别。
OFF has the highest possible rank and is intended to turn off logging.
说出最高等级是多么有意义?我宁愿认为DEBUG
或ALL
是最高的,即产生最多数据的级别。
谢谢!
答案 0 :(得分:2)
Samudra Gupta在他的书 Pro Apache Log4j ,第二版 1 (重点是我的)中说:
级别附加了唯一的整数值,并排列在前面的列表中,从 最低 到 最高 价值。
在内部为每个级别分配一个整数值:
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 > INFO
,但为TRACE < INFO
。因此TRACE
将不会被写入。
第二个if
验证记录器的级别。例如如果记录器的级别为OFF
,ERROR < OFF
,则不会写入ERROR
。
因此,具有高值的级别将不允许在日志中写入具有较小值的级别。 OFF
排名最高(Integer.MAX_VALUE
)。
另一种看待这种情况的方法是Wikipedia says,即严重程度。 OFF
的严重程度最高。
备注的