【发布时间】:2011-12-06 10:47:01
【问题描述】:
log4j 日志的层次结构是什么?
DEBUG
INFO
WARN
ERROR
FATAL
哪一个提供了最高的日志记录,有助于解决问题? 任何人都可以提供从最高到最低进行日志记录的顺序或层次结构吗? 谢谢!
【问题讨论】:
log4j 日志的层次结构是什么?
DEBUG
INFO
WARN
ERROR
FATAL
哪一个提供了最高的日志记录,有助于解决问题? 任何人都可以提供从最高到最低进行日志记录的顺序或层次结构吗? 谢谢!
【问题讨论】:
【讨论】:
error、info、debug 等为记录消息分配优先级/严重性级别。日志记录是否真正生效(消息将可见)取决于正在使用的记录器的有效日志记录级别。
OFF 和ALL 方面有所不同,好吧,在阅读了一些资料之后(没有找到特殊情况),我怀疑他们的表格是否正确。
使用武力,阅读源码(摘自编译的Priority和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;
或log4j API for the Level class,这很清楚。
当库决定是否打印某个语句时,它会计算负责的Logger 对象的有效级别(基于配置)并将其与LogEvent 的级别进行比较(取决于哪个方法)在代码中使用 - trace/debug/.../fatal)。如果LogEvent 的级别大于或等于Logger 的级别,则LogEvent 被发送到附加程序——“打印”。归根结底,这一切都归结为整数比较,这就是这些常量发挥作用的地方。
【讨论】:
OFF
FATAL
ERROR
WARN
INFO
DEBUG
TRACE
ALL
【讨论】:
trace,他们后来正确地指出ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF(其中<意味着不太重要)
log4j 日志级别的层次结构按从高到低的顺序如下:
TRACE 日志级别提供最高的日志记录,有助于解决问题。 DEBUG 日志级别对于解决问题也非常有用。
您还可以参考此链接了解有关日志级别的更多信息: https://logging.apache.org/log4j/2.0/manual/architecture.html
【讨论】:
[取自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 日志级别更受限制,用于记录警告类型的消息,例如客户端和服务器之间的连接丢失。数据库连接丢失,Socket 达到极限。这些消息和 java 日志级别几乎很重要,因为您可以在 java 中对这些日志消息设置警报,并让您的支持团队监控您的 java 应用程序的运行状况并对这些警告消息做出反应。总之,WARN 级别用于记录 Java 登录的警告消息。
ERROR 是比 WARN 更受限制的 java 日志级别,用于记录错误和异常,您还可以在此 java 日志级别上设置警报,并警报监控团队对此消息做出反应。 ERROR 对于 Java 登录很严重,您应该始终打印它。
FATAL java 日志级别指定了可能导致应用程序中止的非常严重的错误事件。在此之后,您的应用程序通常会崩溃并停止。
OFF Java 日志记录级别具有最高级别,旨在关闭 Java 日志记录。
【讨论】:
层次顺序
【讨论】:
我觉得“日志级别”这个词有点混乱,所以我更喜欢这样想:
按照惯例,log4j 定义了一些Standard Log Levels。在 v2.x 中,这些是(按严重程度递减的顺序):
OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL。请注意,OFF 和 ALL 仅用作记录器阈值,而不是事件严重性级别)。您还可以添加自己的自定义级别,并为其分配一个数值。
Logger 将忽略严重程度低于其阈值的任何事件:
OFF 的阈值表示没有日志记录。FATAL 的阈值表示仅记录 FATAL 事件(或更糟)。ERROR 的阈值表示仅记录 ERROR、FATAL(或更糟)。WARN 的阈值表示仅记录 WARN、ERROR、FATAL(或更糟)。ALL 的阈值表示记录所有事件(最详细的选项)作为图表(基于in the log4j v2.x docs 显示的表格),它看起来像这样:
【讨论】:
跟踪 --> 调试--> 信息 --> 警告 --> 错误 --> 致命
如果日志级别设置为 WARN。它将记录所有 WARN 及其下方的所有级别。(错误和致命)。 如果为 TRACE 设置了日志级别。它将记录所有 TRACE 及其下方的所有级别。(DEBUG、INFO、WARN、ERROR、FATAL)。
【讨论】: