Log4j 日志记录级别

后端 潘老师 6个月前 (10-25) 149 ℃ (0) 扫码查看

在本 Log4j 2 教程中,我们将讨论 Log4j 的日志记录级别。这些日志记录级别用于控制添加到日志语句中的信息量和类型。

许多分析工具,如 Splunk,可以根据对日志级别的过滤器来生成报告。

1.日志记录级别

在 Log4j 中,日志记录级别是 org.apache.log4j.Level 类的实例。Log4j 具有以下日志记录级别。

Log 等级 描述 Integer 值
ALL ALL用于打开所有级别的日志。配置此级别后,其他级别(包括自定义级别)将不予考虑。 Integer.MAX_VALUE
TRACE TRACE在版本1.2中引入,为调试级别日志添加了更多信息。请注意,此级别的日志量可能会非常大。 600
DEBUG DEBUG用于记录精细级别的信息事件,对于调试应用程序非常有用。在生产环境中,此级别通常会被关闭,直到需要打开以调试开发环境中不可重现的关键生产问题。 500
INFO INFO是生产环境中最常用的级别,用于记录粗粒度的信息消息,突出显示应用程序的进度。实时系统管理员会监视信息日志以确保系统正常运行。 400
WARN WARN表明应用程序可能会继续,但我们应该格外小心。通常,应用程序可以容忍警告消息,但应始终进行验证和检查。 300
ERROR ERROR表示发生严重错误,必须立即进行调查。它意味着应用程序遇到了非常不理想的状态。例如数据库不可用或格式化输入不正确等。 200
FATAL FATAL表示非常严重的错误,甚至可能导致应用程序崩溃。 100
OFF OFF表示不记录任何日志。 0
请注意,默认情况下 Log4j 将根记录器分配给 Level.ERROR。

2.如何设置日志级别

2.1 在 log4j2.properties 中设置日志级别

以下示例将根记录器的日志级别设置为 DEBUG,并将 ‘com.howtodoinjava.web.controller’ 包的日志级别设置为 INFO。

rootLogger.level = debug
appender.console.type = Console
appender.console.name = consoleLogger
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
#以INFO级别记录 'com.howtodoinjava.web.controller'包日志
logger.com.howtodoinjava.web.controller=INFO, consoleLogger

更多信息:Log4j2.properties 配置示例

2.2 在 log4j2.xml 中设置日志级别

<Configuration status="warn">
    <Appenders>
        <!-- Console appender 配置-->
        <Console name="console" target="SYSTEM_OUT">
            <PatternLayout
                pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
        </Console>
    </Appenders>
    <Loggers>
        <!-- Root logger 指向 console appender -->
        <Root level="DEBUG" additivity="false">
            <AppenderRef ref="console" />
        </Root>
    </Loggers>
</Configuration>

更多信息:Log4j2.xml 配置示例

3.日志级别如何工作?

在 log4j 中,日志级别根据分配给它们的整数值进行排序,如第一个表格所示。

如果将日志级别设置为 ‘X’,则任何具有 ‘level <= X’(较小范围)的日志请求将在日志文件中记录。所有具有更高顺序的请求将不会被记录。

例如,如果将日志级别设置为 INFO,则应用程序将记录具有 INFO、WARN、ERROR 和 FATAL 范围的消息。所有 DEBUG 和 TRACE 日志不会添加到日志文件中。

这个图表中,垂直标题显示 LogEvent 的级别,而水平标题显示与适当的日志配置相关联的 Log 级别。交集标识是否允许 LogEvent 通过进一步的处理(YES)或丢弃(NO)。

4.Log4j 日志记录级别示例

以下是一个 Java 程序,演示了 log4j 中日志级别的使用。该示例将日志级别设置为 INFO,然后记录不同级别的多个消息。根据我们的讨论,该程序将打印所有除 DEBUG 和 TRACE 以外的日志消息。

import org.apache.log4j.*;
public class LogLevelExample
{
   private static Logger logger = Logger.getLogger(LogLevelExample.class);
   public static void main(String[] args) {
      logger.setLevel(Level.INFO);
      logger.trace("Trace Message!");
      logger.debug("Debug Message!");
      logger.info("Info Message!");
      logger.warn("Warn Message!");
      logger.error("Error Message!");
      logger.fatal("Fatal Message!");
   }
}

程序输出:

Info Message!
Warn Message!
Error Message!
Fatal Message!

版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/back/10381.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】