log4j日志记录的层次结构是什么?

DEBUG
INFO
WARN
ERROR
FATAL

哪一个提供最高的日志记录,这将有助于解决问题? 有人能提供日志记录从高到低的顺序或层次结构吗? 谢谢!


当前回答

跟踪——>调试——>信息——>警告——>错误——>致命

如果“日志级别”为“警告”。它将记录所有WARN和它下面的所有级别。(错误和致命)。 如果“日志级别”为“TRACE”。它会记录所有的TRACE和它下面的所有级别(DEBUG,INFO,WARN,ERROR,FATAL)。

其他回答

OFF
FATAL
ERROR
WARN
INFO
DEBUG
TRACE
ALL

等级秩序

所有 跟踪 调试 信息 警告 错误 致命的 从

我发现术语“日志级别”有点令人困惑,所以我更喜欢这样想:

事件有一个SEVERITY(级别)。在log4j中,它被建模为整数。 记录器有一个THRESHOLD(又名LoggerConfig级别,用于过滤事件)

按照约定,log4j定义了一些标准日志级别。在v2。这些是(按严重程度递减): 关闭,致命,错误,警告,信息,调试,跟踪,所有。请注意,OFF和ALL只是Logger的阈值,而不是事件严重级别)。您还可以添加自己的自定义级别,并为它们分配一个数值。

Logger将忽略任何严重程度低于其阈值的事件:

阈值为OFF表示没有日志记录。 阈值为FATAL意味着只记录致命事件(或更糟糕的事件)。 ERROR阈值表示只记录ERROR、FATAL(或更糟的情况)。 阈值WARN表示只记录WARN、ERROR、FATAL(或更糟糕的)。 等等…… 阈值为ALL意味着记录所有事件(最详细的选项)

作为一个图表(基于log4j v2中显示的表)。X文档)它看起来是这样的:

使用强制,读取源代码(摘自编译的优先级和级别类,TRACE级别在1.2.12版本中引入):

public final static int OFF_INT = Integer.MAX_VALUE;
public final static int FATAL_INT = 50000;
public final static int ERROR_INT = 40000;
public final static int WARN_INT  = 30000;
public final static int INFO_INT  = 20000;
public final static int DEBUG_INT = 10000;
public static final int TRACE_INT = 5000; 
public final static int ALL_INT = Integer.MIN_VALUE; 

或者Level类的log4j API,这很清楚。

当库决定是否打印某条语句时,它会计算负责的Logger对象的有效级别(基于配置),并将其与LogEvent的级别(取决于代码中使用的方法- trace/debug/…/fatal)进行比较。如果LogEvent的级别大于或等于Logger的级别,LogEvent将被发送到appender(s) - "打印"。归根结底,这一切都可以归结为整数比较,这就是这些常量发挥作用的地方。

为了说明这一点,在log4j中没有像“层次结构”这样定义的术语。 是的,有不同的层次。为了进行故障排除,您必须选择需要日志的级别。