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

DEBUG
INFO
WARN
ERROR
FATAL

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


当前回答

log4j日志级别从高到低的层次结构如下:

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

TRACE日志级别提供最高级别的日志记录,这将有助于故障排除。DEBUG日志级别对于解决问题也非常有用。

你也可以参考这个链接了解更多关于日志级别的信息: https://logging.apache.org/log4j/2.0/manual/architecture.html

其他回答

OFF
FATAL
ERROR
WARN
INFO
DEBUG
TRACE
ALL

使用强制,读取源代码(摘自编译的优先级和级别类,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) - "打印"。归根结底,这一切都可以归结为整数比较,这就是这些常量发挥作用的地方。

[摘自http://javarevisited.blogspot.com/2011/05/top-10-tips-on-logging-in-java.html]

DEBUG是受限制的最低java日志级别,我们应该编写调试应用程序所需的所有内容,这种java日志模式只能用于开发和测试环境,不能用于生产环境。

INFO级别比DEBUG java日志级别更受限制,我们应该在java的INFO级别日志中记录信息,如服务器已经启动,传入消息,传出消息等。

WARN比INFO java日志级别限制更大,用于记录警告类型的消息,例如客户端和服务器之间的连接丢失。数据库连接丢失,套接字达到极限。这些消息和java日志级别非常重要,因为您可以在java中对这些日志消息设置警报,让您的支持团队监视java应用程序的健康状况,并对这些警告消息做出反应。WARN级别用于记录登录Java时的警告信息。

ERROR是比WARN更受限制的java日志级别,用于记录错误和异常,您还可以在此java日志级别上设置alert,并警告监控团队对此消息做出反应。在登录Java时ERROR是很严重的,你应该总是打印它。

FATAL java日志级别指定可能导致应用程序中止的非常严重的错误事件。在此之后,大部分应用程序崩溃并停止。

OFF java日志级别具有可能的最高级别,用于关闭java中的日志记录。

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

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

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

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

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

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

等级秩序

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