Java 中的 Logger getLogger() 方法详解及示例

在我们探索 Java 日志记录的世界时,Logger 类中的 getLogger() 方法是我们用来查找或创建日志记录器的一个核心工具。具体来说,如果我们传入的名称对应的日志记录器已经存在,该方法将直接返回该记录器;否则,它将创建一个具有该名称的新日志记录器并将其返回。

根据我们传入参数数量的不同,getLogger() 方法主要分为两种类型。

1. getLogger(java.lang.String)

这个方法用于查找或创建一个具有指定名称的日志记录器。如果尚不存在具有该名称的日志记录器,它将创建一个新的。当通过此方法创建新记录器时,其日志级别将根据 LogManager 的配置进行配置,并且它会被配置为也将日志输出发送到其父级的 Handlers(处理器)。它将被注册在 LogManager 全局命名空间中。

语法:

public static Logger getLogger(String name)

参数:

此方法接受单个参数 name,这是一个表示日志记录器名称的字符串。它应该是一个点分隔的名称,通常应基于子系统的包名或类名,例如 java.net 或 javax.swing。

返回值:

此方法返回一个合适的 Logger。

异常:

如果传入的名称为 null,此方法将抛出 NullPointerException

下面的程序演示了 getLogger(java.lang.String) 方法的使用:

程序 1:

// Java program to demonstrate
// Logger.getLogger(java.lang.String) method

import java.util.logging.*;

public class GFG {

    public static void main(String[] args)
    {

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

        // Call info method
        logger.info("Message 1");
        logger.info("Message 2");
    }
}

控制台上打印的输出如下所示。

Output:
程序 2:

// Java program to demonstrate Exception thrown by
// Logger.getLogger(java.lang.String) method
import java.util.logging.*;

public class GFG {

    public static void main(String[] args)
    {

        String LoggerName = null;

        // Create a Logger with a null value
        try {
            Logger logger
                = Logger.getLogger(LoggerName);
        }
        catch (NullPointerException e) {
            System.out.println("Exception Thrown: "
                               + e);
        }
    }
}

控制台上打印的输出如下所示。

Output:

2. getLogger(String name, String resourceBundleName)

此方法用于查找或创建具有传入名称的日志记录器。如果已经创建了具有给定名称的记录器,则返回该记录器。否则,将创建一个新的记录器。如果具有传入名称的 Logger 已经存在但没有本地化资源包,则给定的资源包名称将用作此记录器的本地化资源包。如果命名的 Logger 具有不同的资源包名称,则此方法将抛出 IllegalArgumentException。

语法:

public static Logger getLogger(String name, String resourceBundleName)

参数:

此方法接受两个不同的参数:

  • name:这是日志记录器的名称。此名称应该是一个点分隔的名称,通常应基于子系统的包名或类名,例如 java.net 或 javax.swing。
  • resourceBundleName:这是用于本地化此记录器消息的 ResourceBundle 的名称。

返回值:

此方法返回一个合适的 Logger。

异常:

此方法将抛出以下异常:

  • NullPointerException: 如果传入的名称为 null。
  • MissingResourceException: 如果 resourceBundleName 为非 null 但找不到相应的资源。
  • IllegalArgumentException: 如果 Logger 已存在并且使用了不同的资源包名称;或者如果 resourceBundleName 为 null 但命名的记录器已设置了资源包。

下面的程序演示了 getLogger(String name, String resourceBundleName) 方法的使用:

程序 1:

// Java program to demonstrate
// getLogger(String name, String resourceBundleName) method

import java.util.ResourceBundle;
import java.util.logging.*;

public class GFG {

    public static void main(String[] args)
    {

        // Create ResourceBundle using getBundle
        // myResource is a properties file
        ResourceBundle bundle
            = ResourceBundle
                  .getBundle("resourceBundle");

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