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 对象(例如抛出的异常)。
返回值: 该方法没有返回值。