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

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

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

Logger类的getAnonymousLogger()方法用于创建匿名 Logger。有两种类型的 getAnonymousLogger() 方法,具体取决于传递的参数。

  1. getAnonymousLogger() :此方法用于创建匿名Logger。这个新创建的匿名 Logger 没有在 LogManager 命名空间中注册,也没有对 logger 的更新进行访问检查。所以问题是如果没有访问检查,为什么我们需要这个记录器,因为工厂方法主要用于小程序。因为生成的 Logger 是匿名的,所以它可以由创建类保持私有。这消除了对正常安全检查的需要,这反过来又允许不受信任的小程序代码更新记录器的控制状态。例如,applet 可以在匿名 Logger 上执行 setLevel 或 addHandler。

    此记录器配置为将根记录器(“”)作为其父级。它从根记录器继承其有效级别和处理程序。通过 setParent 方法更改其父级仍需要该方法指定的安全权限。

    句法:

    public static Logger getAnonymousLogger()
    

    参数:此方法不接受任何内容

    返回值:该方法返回一个新创建的私有 Logger

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

    // Java program to demonstrate
    // Logger.getAnonymousLogger() method
      
    import java.util.logging.*;
      
    public class GFG {
      
        public static void main(String[] args)
        {
      
            // Create a Logger with class name GFG
            Logger logger = Logger.getAnonymousLogger();
      
            // Call info method
            logger.info("Message 1");
            logger.info("Message 2");
        }
    }
    

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

    方案二:

    // Java program to demonstrate Exception thrown by
    // Logger.getAnonymousLogger(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
                          .getAnonymousLogger(LoggerName);
            }
            catch (NullPointerException e) {
                System.out.println("Exception Thrown :" + e);
            }
        }
    }
    

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

  2. getAnonymousLogger(String resourceBundleName) :此方法用于创建匿名 Logger。这个新创建的匿名 Logger 没有在 LogManager 命名空间中注册,也没有对 logger 的更新进行访问检查。此 Logger 已将 ResourceBundle 作为参数传递,用于本地化此 logger 的消息。

    句法:

    public static Logger getAnonymousLogger(String resourceBundleName)
    

    参数:此方法接受单个参数resourceBundleName ,它是用于本地化此记录器消息的 ResourceBundle 的名称。

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

    异常:此方法将抛出MissingResourceException:如果 resourceBundleName 为非空且找不到对应的资源。

    下面的程序说明了 getAnonymousLogger(String resourceBundleName) 方法:

    方案一:

    // Java program to demonstrate
    // getAnonymousLogger(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 resourceBundle
            Logger logger
                = Logger
                      .getAnonymousLogger(
                          bundle.getBaseBundleName());
      
            // Log the info
            logger.info("Message 1 for logger");
            logger.info("Message 1 for logger");
        }
    }
    

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

参考:

  • https://docs.oracle.com/javase/10/docs/api/java Java()
  • https://docs.oracle.com/javase/10/docs/api/java Java Java)