Java 中的 Logger log() 方法详解与示例

Logger 类中的 log() 方法是我们用来记录日志消息的核心工具。当我们调用这个方法时,如果该 Logger 当前已启用了作为参数传入的消息级别,它就会创建一个相应的 LogRecord,并将其转发给所有已注册的 Output Handler 对象进行处理。

在 Logger 类中,根据传入参数的不同,我们实际上可以使用七种不同的 log() 方法变体。让我们来看看主要的几种形式及其用法。

1. log(Level level, String msg)

这个方法用于记录不包含任何参数的简单消息。也就是说,只有字符串本身会被写入到日志输出中。

语法:

public void log(Level level, String msg)

参数:

  • level:这是消息级别的标识符,例如 SEVERE、WARNING 或 INFO。
  • msg:这是我们要记录的字符串消息(或者是消息目录中的键)。

返回值: 该方法没有返回值。
示例程序 1: 使用 log(Level level, String msg) 方法

// Java program to demonstrate
// Logger.log(Level level, String msg)  method

import java.util.logging.Level;
import java.util.logging.Logger;

public class GFG {

    public static void main(String[] args)
    {

        // Create a Logger
        Logger logger
            = Logger.getLogger(
                GFG.class.getName());

        // log messages using log(Level level, String msg)
        logger.log(Level.INFO, "This is message 1");
        logger.log(Level.WARNING, "This is message 2");
    }
}

输出:
<img src="https://media.geeksforgeeks.org/wp-content/uploads/20190626005731/1003.png" alt="image" />

2. log(Level level, String msg, Object param1)

这个方法允许我们在记录消息时带入一个对象参数。这对于需要动态填充日志内容的场景非常有用。

语法:

public void log(Level level, String msg, Object param1)

参数:

  • level:消息级别标识符,例如 SEVERE。
  • msg:字符串消息(在消息中我们通常使用 {0} 作为占位符来代表参数)。
  • param1:要插入到消息中的参数对象。

返回值: 该方法没有返回值。
示例程序 2: 使用 log(Level level, String msg, Object param1) 方法

// Java program to demonstrate
// Logger.log(Level level, String msg, Object param1)

import java.util.logging.Level;
import java.util.logging.Logger;

public class GFG {

    public static void main(String[] args)
    {

        // Create a Logger
        Logger logger
            = Logger.getLogger(
                GFG.class.getName());

        // log messages using
        // log(Level level, String msg, Object param1)
        logger.log(Level.INFO, "logging: {0} ", "message1");
        logger.log(Level.SEVERE, "logging: {0} ", "message2");
    }
}

输出:
<img src="https://media.geeksforgeeks.org/wp-content/uploads/20190626005747/200.png" alt="image" />

3. log(Level level, String msg, Object[] params)

当我们需要处理多个参数时,可以使用这个方法。它接受一个对象数组作为参数,让我们能在日志消息中填入多个动态值。

语法:

public void log(Level level, String msg, Object[] params)

参数:

  • level:消息级别标识符,例如 SEVERE。
  • msg:字符串消息(可以使用 INLINECODE64cf402b, INLINECODEafe9a0fd 等作为占位符)。
  • params:参数数组,包含要插入到消息中的多个对象。

返回值: 该方法没有返回值。
示例程序 3: 使用 log(Level level, String msg, Object[] param1) 方法

// Java program to demonstrate
// Logger.log(Level level, String msg, Object[] param1)

import java.util.logging.Level;
import java.util.logging.Logger;

public class GFG {

    public static void main(String[] args)
    {

        // Create a Logger
        Logger logger
            = Logger.getLogger(
                GFG.class.getName());

        // log messages using
        // log(Level level, String msg, Object[] param1)
        logger.log(Level.INFO, "logging: {0} {1}",
                   new Object[] { "parameter1", "parameter2" });
        logger.log(Level.WARNING, "logging: {0} {1} {2}",
                   new Object[] { "p1", "p2", "p3" });
    }
}

输出:
<img src="https://media.geeksforgeeks.org/wp-content/uploads/20190626005806/300.png" alt="image" />

4. log(Level level, String msg, Throwable thrown)

在异常处理中,这个方法非常实用。它用于记录一条消息,并同时关联一个 Throwable 对象(通常是异常信息),这对于调试错误非常有帮助。

语法:

public void log(Level level, String msg, Throwable thrown)

参数:

  • level:消息级别标识符,例如 SEVERE。
  • msg:字符串消息。
  • thrown:与日志消息关联的 Throwable 对象(例如抛出的异常)。

返回值: 该方法没有返回值。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/22119.html
点赞
0.00 平均评分 (0% 分数) - 0