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

📅  最后修改于: 2022-05-13 01:55:19.584000             🧑  作者: Mango

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

Logger类的getLogger()方法用于查找或创建记录器。如果存在具有传递名称的记录器,则该方法将返回该记录器,否则方法将创建一个具有该名称的新记录器并返回它。有两种类型的 getLogger() 方法,具体取决于传递的参数。

  1. getLogger(Java.lang.String) :此方法用于查找或创建一个名称作为参数传递的记录器。如果 logger 不存在传递的名称,它将创建一个新的 logger。如果通过此方法创建了一个新的记录器,那么它的日志级别将根据 LogManager 配置进行配置,并且它将被配置为还将日志输出发送到其父处理程序。它将在 LogManager 全局命名空间中注册。

    句法:

    public static Logger getLogger(String name)
    

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

    返回值:该方法返回一个合适的 Logger。

    异常:如果传递的名称为空,此方法将抛出NullPointerException

    下面的程序说明了 getLogger(Java.lang.String) 方法:
    方案一:

    // 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");
        }
    }
    

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

    方案二:

    // 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);
            }
        }
    }
    

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

  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。

    异常:此方法将引发以下异常:

    1. NullPointerException:如果传递的名称为空。
    2. MissingResourceException:如果 resourceBundleName 为非 null 且找不到对应的资源。
    3. IllegalArgumentException:如果 Logger 已经存在并使用不同的资源包名称;或者如果 resourceBundleName 为 null 但命名记录器有一个资源包集。

    下面的程序说明了 getLogger(String name, String resourceBundleName) 方法:

    方案一:

    // 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(
                    GFG.class.getName(),
                    bundle.getBaseBundleName());
      
            // Log the info
            logger.info("Message 1 for logger");
        }
    }
    

    对于上面的程序,有一个属性文件名为resourceBundle。我们必须在类旁边添加这个文件来执行程序。
    输出:

参考:

  • https://docs.oracle.com/javase/10/docs/api/java Java .lang.String, Java Java )
  • Java Java )