log4j日志记录层次结构顺序


169

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

DEBUG
INFO
WARN
ERROR
FATAL

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

Answers:


292

该表可能对您有帮助:

日志级别

在第一列下,您将看到该日志在每个级别的工作方式。即对于WARN,(FATAL,ERROR和WARN)将可见。如果设置为OFF,则看不到任何内容。


该条款的知名度和项目不言自明。我看到官方文档对此也含糊不清。输出的方法,例如error,info,debug等记录器受让人的优先级/严重性级别的日志消息。如果日志记录真正生效(消息将可见)取决于所使用的记录器的有效日志记录级别。
— 狼

1
链接断开。请修复或删除
— yurin

尽管这回答了这个问题(这只是在询问“层次结构顺序”),但我还是最终为您的术语不佳而投下了反对票:下降,“可见性”工程,item。您是否不想解释记录器配置如何影响实际记录(传递日志事件)?请考虑其他更新。顺便说一句:官方文档中的表格(在本节末尾)在处理上有所不同OFF和ALL,那么,读一些源后(未发现特殊情况),我怀疑他们的表是正确的。
— 狼

谢谢狼,我已经根据您的评论更新了答案。
— nxhoaf

2
我认为这是对日志级别和预期日志消息类型的出色可视化,这些日志消息类型将针对特定的日志记录器级别设置输出。我唯一的建议可能是使用交替的行颜色来引导查看者该图表应按行而不是列进行解释。(即,行代表记录器级别,列代表将出现的日志消息类型)
— 拉里·赫克托 Larry Hector

149

使用强制,阅读源代码(摘自Priorityand Level类编译,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; 

或class的log4j APILevel,这很清楚。

当库决定是否打印某些语句时,它将计算责任人的有效级别。 Logger对象(基于配置),并将其与LogEvent的级别进行比较(取决于代码中使用的方法– trace / debug / ... /致命)。如果LogEvent的水平大于或等于Logger的水平,则将LogEvent其发送到附加程序-“已打印”。从根本上讲,所有这些都归结为一个整数比较,这就是这些常量起作用的地方。


56
OFF
FATAL
ERROR
WARN
INFO
DEBUG
TRACE
ALL

1
这是与提供的信息相互矛盾的tutorialspoint.com/log4j/log4j_logging_levels.htm 哪一项是正确???
— 麦克

1
检查代码中整数变量的位置,以证明docjar.com/html/api/org/apache/log4j/Level.java.html
— the.malkolm 2011年

4
在您的链接上说“全部<调试<信息<警告<错误<致命<关”,它与我说的完全相同
— the.malkolm 2011年

6
维恩图OFF()ALL(TRACE(DEBUG(INFO(WARN(ERROR(FATAL)))))))
— HernánEche,2016年

@Mike在log4j日志记录级别中,它们在第一张表中使用字母顺序。除了失踪trace,他们后来正确地指出ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF(其中<意味着次要)
— 沃尔夫,


12

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

DEBUG是受限制的最低Java日志记录级别,我们应该编写调试应用程序所需的所有内容,该Java日志记录模式仅应在开发和测试环境中使用,而不能在生产环境中使用。

INFO比DEBUG Java日志记录级别受到更多限制,我们应该在Java的INFO级别日志记录中提供有用信息的消息,例如Server已启动,传入消息,传出消息等。

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

ERROR是比WARN受更严格限制的Java日志记录级别,用于记录错误和异常,您还可以在此Java日志记录级别上设置警报,并使警报监视团队对此消息作出反应。错误对于登录Java很严重,您应该始终打印它。

FATAL Java日志记录级别指定了非常严重的错误事件,可能会导致应用程序中止。在此之后,大多数情况下您的应用程序崩溃并停止了。

OFF Java日志记录级别具有最高的级别,旨在关闭Java中的日志记录。


4

层次结构顺序

  1. 所有
  2. 跟踪
  3. 调试
  4. 信息
  5. 警告
  6. 错误
  7. 致命
  8. 关
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.