Module  java.logging
软件包  java.util.logging

Class Logger



  • public class Logger
    extends Object
    Logger对象用于记录特定系统或应用程序组件的消息。 记录器通常被命名,使用分层的点分隔命名空间。 记录器名称可以是任意字符串,但它们通常应基于记录组件的包名或类名,例如java.net或javax.swing。 此外,还可以创建不存储在记录器命名空间中的“匿名”记录器。

    Logger对象可以通过getLogger工厂方法之一的调用获得。 这些将创建一个新的Logger或返回一个合适的现有Logger。 重要的是要注意,如果不保留对Logger的强烈引用,则可以随时从getLogger工厂方法之一返回的记录器getLogger被垃圾回收。

    记录消息将被转发到已注册的Handler对象,该对象可以将消息转发到各种目的地,包括控制台,文件,操作系统日志等。

    每个记录器跟踪一个“父”记录器,它是Logger命名空间中最近的祖先。

    每个记录器都有一个与其关联的“级别”。 这反映了该记录器关心的最低级别。 如果记录器的级别设置为null ,则其有效级别将从其父级继承,这可以从其父级递归地获取它,并且等等。

    可以根据日志配置文件的属性配置日志级别,如LogManager类的描述中所述。 但是也可以通过Logger.setLevel方法的调用动态更改。 如果记录器的级别发生更改,则更改也可能会影响到子记录器,因为任何具有null级别的子记录器将从其父级继承其有效级别。

    在每个日志记录中,记录器首先根据记录器的有效日志级别执行对请求级别的便宜检查(例如SEVERE或FINE)。 如果请求级别低于日志级别,日志记录调用将立即返回。

    在通过此初始(便宜)测试之后,记录器将分配一个LogRecord来描述记录消息。 然后它将调用过滤器(如果存在)来更详细地检查是否应该发布记录。 如果通过它,则将LogRecord发布到其输出处理程序。 默认情况下,记录器也会向树的父进程发布。

    每个记录器可能有一个ResourceBundle与之相关联。 ResourceBundle可以通过名称,使用getLogger(java.lang.String, java.lang.String)工厂方法或按值 - 使用setResourceBundle方法指定。 此捆绑包将用于本地化日志消息。 如果一个记录器没有自己的ResourceBundle或资源束名称,那么它会从它的父级继承ResourceBundle或资源束名称,递归地上传树。

    大多数记录器输出方法都采用“msg”参数。 该msg参数可以是原始值或本地化密钥。 在格式化期间,如果记录器具有(或继承)本地化ResourceBundle ,如果ResourceBundle具有msg字符串的映射,则msg字符串将被本地化值替换。 否则使用原始msg字符串。 通常,格式化程序使用java.text.MessageFormat样式格式来设置参数格式,例如,格式字符串“{0} {1}”会将两个参数格式化为字符串。

    一组方法或者采用“msgSupplier”而不是“msg”参数。 这些方法采用Supplier <String>函数,只有当消息实际上要根据有效日志级别进行记录,从而消除不必要的消息构造时,才调用它来构造所需的日志消息。 例如,如果开发者想要使用字符串接受版本来记录诊断的系统运行状况,代码将如下所示:

       class DiagnosisMessages { static String systemHealthStatus() { // collect system health information ... } } ... logger.log(Level.FINER, DiagnosisMessages.systemHealthStatus());  
    使用上述代码,即使日志级别FINER被禁用,也会不必要地收集运行状况。 使用如下的供应商接受版本,只有启用日志级别FINER时才会收集该状态。
       logger.log(Level.FINER, DiagnosisMessages::systemHealthStatus);  

    当查找ResourceBundle ,记录器将首先查看是否使用setResourceBundle指定了一个包,然后只查看是否通过getLogger工厂方法指定了资源包名称。 如果没有ResourceBundle或没有资源束名,那么它将使用从其父树继承的最近的ResourceBundle或资源束名。
    ResourceBundle被继承或指定通过setResourceBundle方法,则该ResourceBundle将被使用。 否则,如果记录器仅具有或继承了资源包名称,则该资源包名称将映射到ResourceBundle对象,在记录时使用默认的区域设置。
    将资源包名称映射到ResourceBundle对象时,记录器将首先尝试使用线程的context class loader将给定的资源包名称映射到ResourceBundle 如果线程上下文类加载器是null ,那么它会尝试system class loader 如果仍然没有找到ResourceBundle ,它将使用getLogger工厂方法的第一个调用者的类加载器。

    格式化(包括本地化)是输出Handler的责任,通常会调用Formatter。

    请注意,格式化不需要同步进行。 它可能会被延迟,直到LogRecord实际写入外部接收器。

    记录方法分为五大类:

    • 有一组“日志”方法采用日志级别,消息字符串以及可选的一些参数到消息字符串。

    • 有一套类似于“log”方法的“logp”方法(对于“log精确”),而且还需要一个明确的源类名和方法名称。

    • 有一组“logrb”方法(对于“log with resource bundle”),类似于“logp”方法,而且还需要使用明确的资源束对象来用于本地化日志消息。

    • 有方便的跟踪方法条目(“输入”方法),方法返回(“退出”方法)和抛出异常(“抛出”方法)的方便方法。

    • 最后,当一个开发人员只想在一个给定的日志级别上记录一个简单的字符串时,最简单的情况就是使用一组方便的方法。 这些方法以标准级别名称(“严重”,“警告”,“信息”等)命名,并采用单个参数,即消息字符串。

    对于不使用明确的源名称和方法名称的方法,Logging框架将作出“尽力而为”来确定调用到日志记录方法中的哪个类和方法。 然而,重要的是要意识到,这个自动推断的信息可能只是近似的(或者甚至可能是错误的!)。 允许虚拟机在JITing时进行大量优化,并可能完全删除堆栈帧,从而无法可靠地定位调用类和方法。

    Logger上的所有方法都是多线程安全的。

    子类化信息:请注意,LogManager类可以为命名空间中的任何一个点提供自己的命名记录器实现。 因此,Logger的任何子类(除非它们与新的LogManager类一起实现)应该注意从LogManager类获取Logger实例,并且应该将诸如“isLoggable”和“log(LogRecord)”等操作委派给该实例。 请注意,为了拦截所有日志输出,子类只需要覆盖日志(LogRecord)方法。 所有其他日志记录方法都被实现为对该日志(LogRecord)方法的调用。

    从以下版本开始:
    1.4
    • 字段详细信息

      • GLOBAL_LOGGER_NAME

        public static final String GLOBAL_LOGGER_NAME
        GLOBAL_LOGGER_NAME是全球记录器的名称。
        从以下版本开始:
        1.6
        另请参见:
        Constant Field Values
      • global

        @Deprecated
        public static final Logger global
        已过时。 此字段的初始化容易出现死锁。 该字段必须由Logger类初始化初始化,这可能会导致与LogManager类初始化的死锁。 在这种情况下,两个类初始化等待彼此完成。 获取全局记录器对象的首选方法是通过调用Logger.getGlobal() 为了兼容Logger.getGlobal()不可用的旧JDK版本,请使用Logger.getLogger(Logger.GLOBAL_LOGGER_NAME)Logger.getLogger("global")
        提供了“全局”Logger对象,方便那些正在使用日志记录软件包的开发人员。 正在严重使用日志记录包的开发人员(例如在产品中)应该创建并使用自己的Logger对象和适当的名称,以便可以以合适的每个Logger粒度来控制日志记录。 开发人员还需要强力引用Logger对象,以防止它们被垃圾回收。
    • 构造方法详细信息

      • Logger

        protected Logger​(String name,
                         String resourceBundleName)
        构建命名子系统的记录器的受保护方法。

        记录器最初将配置为空级别,并将useParentHandlers设置为true。

        参数
        name - 记录器的名称。 这应该是一个点分隔的名称,通常应该基于子系统的包名或类名,如java.net或javax.swing。 匿名记录器可能为空。
        resourceBundleName - 用于本地化此记录器消息的ResourceBundle的名称。 如果没有任何消息需要本地化,则可以为null。
        异常
        MissingResourceException - 如果resourceBundleName为非空,并且不能找到相应的资源。
    • 方法详细信息

      • getGlobal

        public static final Logger getGlobal​()
        返回名为Logger.GLOBAL_LOGGER_NAME的全局记录器对象。
        结果
        全局记录器对象
        从以下版本开始:
        1.7
      • getLogger

        public static Logger getLogger​(String name)
        查找或创建一个命名子系统的记录器。 如果已经使用给定名称创建了记录器,则返回它。 否则将创建一个新的记录器。

        如果创建了一个新的记录器,则它的日志级别将根据LogManager配置进行配置,并将其配置为也将记录输出发送到其父代的处理程序。 它将在LogManager全局命名空间中注册。

        注意:LogManager可能只保留对新创建的Logger的弱引用。 重要的是要明白,如果没有强有力的引用Logger,以前创建的具有给定名称的Logger可能随时被垃圾回收。 特别地,这意味着像getLogger("MyLogger").log(...)这样的两个背靠背调用可能会使用名为“MyLogger”的不同Logger对象,如果程序中其他地方没有强大的引用名为“MyLogger”的Logger。

        参数
        name - 记录器的名称。 这应该是一个点分隔的名称,通常应该基于子系统的包名或类名,如java.net或javax.swing
        结果
        一个合适的记录器
        异常
        NullPointerException - 如果名称为空。
      • getLogger

        public static Logger getLogger​(String name,
                                       String resourceBundleName)
        查找或创建一个命名子系统的记录器。 如果已经使用给定名称创建了记录器,则返回它。 否则将创建一个新的记录器。

        如果创建了一个新的记录器,它将根据LogManager配置其日志级别,并将其配置为也将记录输出发送到其父代的处理程序。 它将在LogManager全局命名空间中注册。

        注意:LogManager可能只保留对新创建的Logger的弱引用。 重要的是要明白,如果没有强有力的引用Logger,以前创建的具有给定名称的Logger可能随时被垃圾回收。 特别地,这意味着像getLogger("MyLogger", ...).log(...)这样的两个背靠背调用可能会使用名为“MyLogger”的不同Logger对象,如果程序中其他地方没有强大的引用名为“MyLogger”的Logger。

        如果命名的Logger已经存在并且还没有本地化资源包,那么将使用给定的资源包名称。 如果命名的Logger已经存在且具有不同的资源包名称,则会抛出IllegalArgumentException。

        参数
        name - 记录器的名称。 这应该是一个点分隔的名称,通常应该基于子系统的包名或类名,如java.net或javax.swing
        resourceBundleName - 用于本地化此记录器消息的ResourceBundle的名称。 如果没有任何消息需要本地化,可能是null
        结果
        一个合适的记录器
        异常
        MissingResourceException - 如果resourceBundleName为非空,并且不能找到相应的资源。
        IllegalArgumentException - 如果记录器已存在并使用不同的资源包名称; 或者如果resourceBundleNamenull但命名的记录器具有一个资源束集合。
        NullPointerException - 如果名称为空。
      • getAnonymousLogger

        public static Logger getAnonymousLogger​()
        创建一个匿名记录器。 新创建的Logger未在LogManager命名空间中注册。 对记录器的更新将不会进行访问检查。

        这种工厂方法主要用于从小程序中使用。 因为生成的Logger是匿名的,所以它可以被创建类保留为私有。 这消除了对正常安全检查的需要,这进而允许不可信的小程序代码更新记录器的控制状态。 例如,applet可以在匿名记录器上执行setLevel或addHandler。

        即使新的记录器是匿名的,它被配置为使用根记录器(“”)作为其父记录器。 这意味着默认情况下,它会从根记录器继承其有效的级别和处理程序。 通过setParent方法更改其父项仍将需要该方法指定的安全权限。

        结果
        一个新创建的私有Logger
      • getAnonymousLogger

        public static Logger getAnonymousLogger​(String resourceBundleName)
        创建一个匿名记录器。 新创建的Logger未在LogManager命名空间中注册。 对记录器的更新将不会进行访问检查。

        这种工厂方法主要用于从小程序中使用。 因为生成的Logger是匿名的,所以它可以被创建类保留为私有。 这消除了对正常安全检查的需要,这进而允许不可信的小程序代码更新记录器的控制状态。 例如,applet可以在匿名记录器上执行setLevel或addHandler。

        即使新的记录器是匿名的,它被配置为使用根记录器(“”)作为其父记录器。 这意味着默认情况下,它会从根记录器继承其有效的级别和处理程序。 通过setParent方法更改其父项仍将需要该方法指定的安全权限。

        参数
        resourceBundleName - 用于本地化此记录器消息的ResourceBundle的名称。 如果没有任何消息需要本地化,则可以为null。
        结果
        一个新创建的私有Logger
        异常
        MissingResourceException - 如果resourceBundleName为非空,并且不能找到相应的资源。
      • getResourceBundle

        public ResourceBundle getResourceBundle​()
        检索此记录器的本地化资源包。 该方法将返回一个ResourceBundle这样做,要么通过设置setResourceBundle方法或mapped from the the resource bundle name组通过getLogger当前默认语言环境的工厂方法。
        请注意,如果结果为null ,则Logger将使用从其父级继承的资源包或资源包名称。
        结果
        本地化捆绑(可能是 null
      • getResourceBundleName

        public String getResourceBundleName​()
        检索此记录器的本地化资源包名称。 这是既可以通过指定的名称getLogger工厂方法,或base name的ResourceBundle的设定通过setResourceBundle方法。
        请注意,如果结果为null ,则记录器将使用从其父级继承的资源束或资源束名称。
        结果
        本地化组名称(可能为 null
      • setFilter

        public void setFilter​(Filter newFilter)
                       throws SecurityException
        设置一个过滤器来控制此记录器的输出。

        通过初始“级别”检查后,记录器将调用此过滤器来检查是否应该发布日志记录。

        参数
        newFilter - 过滤器对象(可以为空)
        异常
        SecurityException - 如果安全管理器存在,则该记录器不是匿名的,并且调用者没有LoggingPermission(“control”)。
      • getFilter

        public Filter getFilter​()
        获取此Logger的当前过滤器。
        结果
        过滤器对象(可以为空)
      • log

        public void log​(LogRecord record)
        登录LogRecord。

        该类中的所有其他日志记录方法通过此方法调用以实际执行任何日志记录。 子类可以覆盖此单一方法来捕获所有日志活动。

        参数
        record - 要发布的LogRecord
      • log

        public void log​(Level level,
                        String msg)
        记录消息,没有参数。

        如果当前对于给定的消息级别启用了记录器,则给定的消息将转发给所有注册的输出处理程序对象。

        参数
        level - 消息级标识符之一,例如SEVERE
        msg - 字符串消息(或消息目录中的键)
      • log

        public void log​(Level level,
                        Supplier<String> msgSupplier)
        记录一条消息,只有在日志记录级别实际上记录该消息时才会被构造。

        如果当前对于给定消息级别启用了记录器,则通过调用提供的供应商功能并将其转发到所有注册的输出处理程序对象来构建消息。

        参数
        level - 其中一个消息级标识符,例如SEVERE
        msgSupplier - 一个函数,当被调用时,产生所需的日志消息
        从以下版本开始:
        1.8
      • log

        public void log​(Level level,
                        String msg,
                        Object param1)
        使用一个对象参数记录消息。

        如果当前为给定消息级别启用了记录器,则会创建一个相应的LogRecord并转发给所有注册的输出处理程序对象。

        参数
        level - 消息级标识符之一,例如SEVERE
        msg - 字符串消息(或消息目录中的键)
        param1 - 消息的参数
      • log

        public void log​(Level level,
                        String msg,
                        Object[] params)
        用一个对象参数数组记录消息。

        如果当前为给定消息级别启用了记录器,则会创建一个相应的LogRecord并转发给所有注册的输出处理程序对象。

        参数
        level - 消息级标识符之一,例如SEVERE
        msg - 字符串消息(或消息目录中的键)
        params - 消息的参数数组
      • log

        public void log​(Level level,
                        String msg,
                        Throwable thrown)
        使用相关联的Throwable信息记录消息。

        如果当前为给定消息级别启用了记录器,则给定的参数将存储在LogRecord中,该LogRecord将转发给所有注册的输出处理程序。

        请注意,抛出的参数存储在LogRecord throwwn属性中,而不是LogRecord参数属性。 因此,它由输出格式化程序特别处理,不被视为LogRecord消息属性的格式参数。

        参数
        level - 其中一个消息级标识符,例如SEVERE
        msg - 字符串消息(或消息目录中的键)
        thrown - 与日志消息相关联的Throwable。
      • log

        public void log​(Level level,
                        Throwable thrown,
                        Supplier<String> msgSupplier)
        记录一个懒惰构造的消息,并附带相关的Throwable信息。

        如果当前对于给定消息级别启用了记录器,则通过调用提供的供应商功能来构建消息。 然后将消息和给定的Throwable存储在LogRecord ,该LogRecord转发给所有注册的输出处理程序。

        请注意,抛出的参数存储在LogRecord throwwn属性中,而不是LogRecord参数属性。 因此,它由输出格式化程序特别处理,不被视为LogRecord消息属性的格式参数。

        参数
        level - 其中一个消息级标识符,例如SEVERE
        thrown - 与日志消息相关联的Throwable。
        msgSupplier - 一个函数,当被调用时,产生所需的日志消息
        从以下版本开始:
        1.8
      • logp

        public void logp​(Level level,
                         String sourceClass,
                         String sourceMethod,
                         String msg)
        记录消息,指定源类和方法,没有参数。

        如果当前对于给定的消息级别启用了记录器,则给定的消息将转发给所有注册的输出处理程序对象。

        参数
        level - 其中一个消息级标识符,例如SEVERE
        sourceClass - 发出日志记录请求的类的名称
        sourceMethod - 发出日志记录请求的方法的名称
        msg - 字符串消息(或消息目录中的键)
      • logp

        public void logp​(Level level,
                         String sourceClass,
                         String sourceMethod,
                         Supplier<String> msgSupplier)
        记录一个延迟构造的消息,指定源类和方法,没有参数。

        如果当前对于给定消息级别启用了记录器,则通过调用提供的供应商功能并将其转发到所有注册的输出处理程序对象来构建消息。

        参数
        level - 其中一个消息级标识符,例如SEVERE
        sourceClass - 发出日志记录请求的类的名称
        sourceMethod - 发出日志记录请求的方法的名称
        msgSupplier - 一个函数,当被调用时,产生所需的日志消息
        从以下版本开始:
        1.8
      • logp

        public void logp​(Level level,
                         String sourceClass,
                         String sourceMethod,
                         String msg,
                         Object param1)
        使用单个对象参数记录消息,指定源类和方法到日志消息。

        如果当前为给定消息级别启用了记录器,则会创建一个相应的LogRecord并转发给所有注册的输出处理程序对象。

        参数
        level - 消息级标识符之一,例如SEVERE
        sourceClass - 发出日志记录请求的类的名称
        sourceMethod - 发出日志记录请求的方法的名称
        msg - 字符串消息(或消息目录中的键)
        param1 - 日志消息的参数。
      • logp

        public void logp​(Level level,
                         String sourceClass,
                         String sourceMethod,
                         String msg,
                         Object[] params)
        使用对象参数数组记录消息,指定源类和方法。

        如果当前为给定消息级别启用了记录器,则会创建一个相应的LogRecord并转发给所有注册的输出处理程序对象。

        参数
        level - 消息级标识符之一,例如SEVERE
        sourceClass - 发出日志记录请求的类的名称
        sourceMethod - 发出日志记录请求的方法的名称
        msg - 字符串消息(或消息目录中的键)
        params - 消息的参数数组
      • logp

        public void logp​(Level level,
                         String sourceClass,
                         String sourceMethod,
                         String msg,
                         Throwable thrown)
        使用相关联的Throwable信息记录消息,指定源类和方法。

        如果当前为给定消息级别启用了记录器,则给定的参数将存储在LogRecord中,该LogRecord将转发给所有注册的输出处理程序。

        请注意,抛出的参数存储在LogRecord throwwn属性中,而不是LogRecord参数属性。 因此,它由输出格式化程序特别处理,不被视为LogRecord消息属性的格式参数。

        参数
        level - 其中一个消息级标识符,例如SEVERE
        sourceClass - 发出日志记录请求的类的名称
        sourceMethod - 发出日志记录请求的方法的名称
        msg - 字符串消息(或消息目录中的一个键)
        thrown - 与日志消息相关联的Throwable。
      • logp

        public void logp​(Level level,
                         String sourceClass,
                         String sourceMethod,
                         Throwable thrown,
                         Supplier<String> msgSupplier)
        记录一个懒惰构造的消息,指定源类和方法以及相关联的Throwable信息。

        如果当前对于给定消息级别启用了记录器,则通过调用提供的供应商功能来构建消息。 然后将消息和给定的Throwable存储在LogRecord ,该LogRecord转发给所有注册的输出处理程序。

        请注意,抛出的参数存储在LogRecord throwwn属性中,而不是LogRecord参数属性。 因此,它由输出格式化程序特别处理,不被视为LogRecord消息属性的格式参数。

        参数
        level - 其中一个消息级标识符,例如SEVERE
        sourceClass - 发出日志记录请求的类的名称
        sourceMethod - 发出日志记录请求的方法的名称
        thrown - 与日志消息相关联的Throwable。
        msgSupplier - 一个函数,当被调用时,产生所需的日志消息
        从以下版本开始:
        1.8
      • logrb

        @Deprecated
        public void logrb​(Level level,
                          String sourceClass,
                          String sourceMethod,
                          String bundleName,
                          String msg)
        记录消息,指定没有参数的源类,方法和资源包名称。

        如果当前对于给定的消息级别启用了记录器,则给定的消息将转发给所有注册的输出处理程序对象。

        msg字符串使用命名的资源包进行本地化。 如果资源包名称为空,或空字符串或无效,则msg字符串未本地化。

        参数
        level - 消息级标识符之一,例如SEVERE
        sourceClass - 发出日志记录请求的类的名称
        sourceMethod - 发出日志记录请求的方法的名称
        bundleName - 本地化msg的资源束的名称可以为null
        msg - 字符串消息(或消息目录中的键)
      • logrb

        @Deprecated
        public void logrb​(Level level,
                          String sourceClass,
                          String sourceMethod,
                          String bundleName,
                          String msg,
                          Object param1)
        使用单个对象参数记录消息,指定源类,方法和资源包名称。

        如果当前为给定消息级别启用了记录器,则会创建一个相应的LogRecord并转发给所有注册的输出处理程序对象。

        msg字符串使用命名的资源包进行本地化。 如果资源包名称为空,或空字符串或无效,则msg字符串未本地化。

        参数
        level - 其中一个消息级标识符,例如SEVERE
        sourceClass - 发出日志记录请求的类的名称
        sourceMethod - 发出日志记录请求的方法的名称
        bundleName - 本地化msg的资源束的名称可以为null
        msg - 字符串消息(或消息目录中的键)
        param1 - 日志消息的参数。
      • logrb

        @Deprecated
        public void logrb​(Level level,
                          String sourceClass,
                          String sourceMethod,
                          String bundleName,
                          String msg,
                          Object[] params)
        使用对象参数数组记录消息,指定源类,方法和资源包名称。

        如果当前为给定消息级别启用了记录器,则会创建一个相应的LogRecord并转发给所有注册的输出处理程序对象。

        msg字符串使用命名的资源包进行本地化。 如果资源包名称为空,或空字符串或无效,则msg字符串未本地化。

        参数
        level - 其中一个消息级标识符,例如SEVERE
        sourceClass - 发出日志记录请求的类的名称
        sourceMethod - 发出日志记录请求的方法的名称
        bundleName - 本地化msg的资源束的名称可以为null。
        msg - 字符串消息(或消息目录中的键)
        params - 消息的参数数组
      • logrb

        public void logrb​(Level level,
                          String sourceClass,
                          String sourceMethod,
                          ResourceBundle bundle,
                          String msg,
                          Object... params)
        使用可选的消息参数列表记录消息,指定源类,方法和资源包。

        如果对于给定消息level当前启用了记录器,则创建对应的LogRecord并转发给所有注册的输出Handler对象。

        msg字符串使用给定的资源束进行本地化。 如果资源束为null ,则msg字符串未本地化。

        参数
        level - 其中一个消息级标识符,例如 SEVERE
        sourceClass - 发出日志记录请求的类的名称
        sourceMethod - 发出日志记录请求的方法的名称
        bundle - 资源束定位 msg ,可以是 null
        msg - 字符串消息(或消息目录中的键)
        params - 消息的参数(可选,可能不是)。
        从以下版本开始:
        1.8
      • logrb

        public void logrb​(Level level,
                          ResourceBundle bundle,
                          String msg,
                          Object... params)
        使用可选的消息参数列表记录消息,指定源类,方法和资源包。

        如果对于给定消息level当前启用了记录器,则创建对应的LogRecord并转发给所有注册的输出Handler对象。

        msg字符串使用给定的资源包进行本地化。 如果资源束是null ,则msg字符串未被本地化。

        参数
        level - 消息级别标识之一,例如 SEVERE
        bundle - 本地化资源包msg ; 可以是null
        msg - 字符串消息(或消息目录中的键)
        params - 消息的参数(可选,可能不是)。
        从以下版本开始:
        9
      • logrb

        @Deprecated
        public void logrb​(Level level,
                          String sourceClass,
                          String sourceMethod,
                          String bundleName,
                          String msg,
                          Throwable thrown)
        使用相关联的Throwable信息记录消息,指定源类,方法和资源包名称。

        如果当前为给定消息级别启用了记录器,则给定的参数将存储在LogRecord中,该LogRecord将转发给所有注册的输出处理程序。

        msg字符串使用命名的资源包进行本地化。 如果资源包名称为空,或空字符串或无效,则msg字符串未本地化。

        请注意,抛出的参数存储在LogRecord throwwn属性中,而不是LogRecord参数属性。 因此,它由输出格式化程序特别处理,不被视为LogRecord消息属性的格式参数。

        参数
        level - 消息级标识符之一,例如SEVERE
        sourceClass - 发出日志记录请求的类的名称
        sourceMethod - 发出日志记录请求的方法的名称
        bundleName - 本地化msg的资源束的名称,可以为null
        msg - 字符串消息(或消息目录中的键)
        thrown - 与日志消息相关联的Throwable。
      • logrb

        public void logrb​(Level level,
                          String sourceClass,
                          String sourceMethod,
                          ResourceBundle bundle,
                          String msg,
                          Throwable thrown)
        使用相关联的Throwable信息记录消息,指定源类,方法和资源包。

        如果当前对于给定消息level启用了记录器,则给定的参数存储在LogRecord ,转发给所有注册的输出处理程序。

        msg字符串使用给定的资源包进行本地化。 如果资源束为null ,则msg字符串未本地化。

        请注意, thrown参数是存储在LogRecord thrown属性,而不是LogRecord parameters属性。 因此,它由输出Formatter对象特别处理,并不被视为LogRecord message属性的格式参数。

        参数
        level - 消息级别标识之一,例如 SEVERE
        sourceClass - 发出日志记录请求的类的名称
        sourceMethod - 发出日志记录请求的方法的名称
        bundle - 本地化的资源包 msg ,可以是 null
        msg - 字符串消息(或消息目录中的键)
        thrown - 与日志消息相关联的Throwable。
        从以下版本开始:
        1.8
      • logrb

        public void logrb​(Level level,
                          ResourceBundle bundle,
                          String msg,
                          Throwable thrown)
        使用相关联的Throwable信息记录消息,指定源类,方法和资源包。

        如果当前对于给定消息level启用了记录器,则给定的参数将存储在LogRecord ,该参数转发给所有注册的输出处理程序。

        msg字符串使用给定的资源包进行本地化。 如果资源束为null ,则msg字符串未本地化。

        请注意, thrown参数是存储在LogRecord thrown属性,而不是LogRecord parameters属性。 因此,它通过输出Formatter对象进行特殊处理,并不被视为LogRecord message属性的格式参数。

        参数
        level - 消息级别标识之一,例如 SEVERE
        bundle - 本地化的资源束msg ; 可以是null
        msg - 字符串消息(或消息目录中的键)
        thrown - 与日志消息相关联的Throwable。
        从以下版本开始:
        9
      • entering

        public void entering​(String sourceClass,
                             String sourceMethod)
        记录方法条目。

        这是一种方便的方法,可用于将条目记录到方法中。 具有消息“ENTRY”的LogRecord,日志级别FINER,并且记录给定的sourceMethod和sourceClass。

        参数
        sourceClass - 发出日志记录请求的类的名称
        sourceMethod - 正在输入的方法的名称
      • entering

        public void entering​(String sourceClass,
                             String sourceMethod,
                             Object param1)
        使用一个参数记录方法条目。

        这是一种方便的方法,可用于将条目记录到方法中。 具有消息“ENTRY {0}”的LogRecord,日志级别FINER,并且记录给定的sourceMethod,sourceClass和参数。

        参数
        sourceClass - 发出日志记录请求的类的名称
        sourceMethod - 正在输入的方法的名称
        param1 - 输入方法的参数
      • entering

        public void entering​(String sourceClass,
                             String sourceMethod,
                             Object[] params)
        使用参数数组记录方法条目。

        这是一种方便的方法,可用于将条目记录到方法中。 具有消息“ENTRY”(后跟参数数组中每个条目的格式{N}指示符)的LogRecord,记录级别FINER,并记录给定的sourceMethod,sourceClass和参数。

        参数
        sourceClass - 发出日志记录请求的类的名称
        sourceMethod - 正在输入的方法的名称
        params - 要输入的方法的参数数组
      • exiting

        public void exiting​(String sourceClass,
                            String sourceMethod)
        记录方法返回。

        这是一种方便的方法,可用于记录从方法返回的日志。 具有消息“RETURN”的LogRecord,日志级别FINER以及给定的sourceMethod和sourceClass被记录。

        参数
        sourceClass - 发出日志记录请求的类的名称
        sourceMethod - 方法的名称
      • exiting

        public void exiting​(String sourceClass,
                            String sourceMethod,
                            Object result)
        使用结果对象记录方法返回。

        这是一种方便的方法,可用于记录从方法返回的日志。 具有消息“RETURN {0}”的LogRecord,日志级别FINER,并记录给出sourceMethod,sourceClass和result对象。

        参数
        sourceClass - 发出日志记录请求的类的名称
        sourceMethod - 方法的名称
        result - 正在返回的对象
      • throwing

        public void throwing​(String sourceClass,
                             String sourceMethod,
                             Throwable thrown)
        日志抛出异常。

        这是一种方便的方法来记录一个方法正在通过抛出异常来终止。 使用FINER级别进行日志记录。

        如果当前为给定消息级别启用了记录器,则给定的参数将存储在LogRecord中,该LogRecord将转发给所有注册的输出处理程序。 LogRecord的消息设置为“THROW”。

        请注意,抛出的参数存储在LogRecord throwwn属性中,而不是LogRecord参数属性。 因此,它由输出格式化程序特别处理,不被视为LogRecord消息属性的格式参数。

        参数
        sourceClass - 发出日志记录请求的类的名称
        sourceMethod - 方法的名称。
        thrown - 被抛出的Throwable。
      • severe

        public void severe​(String msg)
        记录一个SEVERE消息。

        如果当前为SEVERE消息级别启用了记录器,则给定的消息将转发给所有注册的输出处理程序对象。

        参数
        msg - 字符串消息(或消息目录中的键)
      • warning

        public void warning​(String msg)
        记录警告消息。

        如果当前为“警告”消息级别启用了记录器,则给定的消息将转发给所有注册的输出处理程序对象。

        参数
        msg - 字符串消息(或消息目录中的键)
      • info

        public void info​(String msg)
        记录INFO消息。

        如果当前为INFO消息级别启用了记录器,则给定的消息将转发给所有注册的输出处理程序对象。

        参数
        msg - 字符串消息(或消息目录中的键)
      • config

        public void config​(String msg)
        记录CONFIG消息。

        如果当前为CONFIG消息级别启用了记录器,则给定的消息将转发给所有注册的输出处理程序对象。

        参数
        msg - 字符串消息(或消息目录中的键)
      • fine

        public void fine​(String msg)
        记录一个FINE消息。

        如果当前为FINE消息级别启用了记录器,则给定的消息将转发给所有注册的输出处理程序对象。

        参数
        msg - 字符串消息(或消息目录中的键)
      • finer

        public void finer​(String msg)
        记录一个FINER消息。

        如果当前为FINER消息级别启用了记录器,则给定的消息将转发给所有注册的输出处理程序对象。

        参数
        msg - 字符串消息(或消息目录中的键)
      • finest

        public void finest​(String msg)
        记录一条FINEST消息。

        如果当前为FINEST消息级别启用了记录器,则给定的消息将转发给所有注册的输出处理程序对象。

        参数
        msg - 字符串消息(或消息目录中的键)
      • severe

        public void severe​(Supplier<String> msgSupplier)
        记录一个SEVERE消息,只有当记录级别实际上记录该消息时,才会构建一个SEVERE消息。

        如果当前为SEVERE消息级别启用了记录器,则通过调用提供的供应商功能并转发给所有注册的输出处理程序对象来构建消息。

        参数
        msgSupplier - 一个函数,当被调用时,产生所需的日志消息
        从以下版本开始:
        1.8
      • warning

        public void warning​(Supplier<String> msgSupplier)
        记录一条警告消息,只有当记录级别实际上记录消息时,才能构建一条警告消息。

        如果当前为“警告”消息级别启用了记录器,则通过调用提供的供应商功能并转发到所有注册的输出处理程序对象来构建消息。

        参数
        msgSupplier - 一个函数,当被调用时,产生所需的日志消息
        从以下版本开始:
        1.8
      • info

        public void info​(Supplier<String> msgSupplier)
        记录INFO消息,只有在记录级别实际记录消息时,才能构建INFO消息。

        如果当前为INFO消息级别启用了记录器,则通过调用提供的供应商功能并将其转发到所有注册的输出处理程序对象来构建消息。

        参数
        msgSupplier - 一个函数,当被调用时,产生所需的日志消息
        从以下版本开始:
        1.8
      • config

        public void config​(Supplier<String> msgSupplier)
        记录一个CONFIG消息,只有在记录级别实际上记录该消息时,才能构建一个CONFIG消息。

        如果目前为CONFIG消息级别启用了记录器,则通过调用提供的供应商功能并转发给所有注册的输出处理程序对象来构建消息。

        参数
        msgSupplier - 一个函数,当被调用时,产生所需的日志消息
        从以下版本开始:
        1.8
      • fine

        public void fine​(Supplier<String> msgSupplier)
        记录一个FINE消息,只有在记录级别实际上记录该消息时才会被构造。

        如果当前为FINE消息级别启用了记录器,则通过调用提供的供应商功能并将其转发到所有注册的输出处理程序对象来构建消息。

        参数
        msgSupplier - 一个函数,当被调用时,产生所需的日志消息
        从以下版本开始:
        1.8
      • finer

        public void finer​(Supplier<String> msgSupplier)
        记录一个FINER消息,只有在记录级别实际上记录该消息时,才会构建一个FINER消息。

        如果当前为FINER消息级别启用了记录器,则通过调用提供的供应商功能并将其转发到所有注册的输出处理程序对象来构建消息。

        参数
        msgSupplier - 一个函数,当被调用时,产生所需的日志消息
        从以下版本开始:
        1.8
      • finest

        public void finest​(Supplier<String> msgSupplier)
        记录一个FINEST消息,只有当记录级别实际上记录消息时,才能构建FINEST消息。

        如果当前为FINEST消息级别启用了记录器,则通过调用提供的供应商函数并转发给所有注册的输出处理程序对象来构建消息。

        参数
        msgSupplier - 一个函数,当被调用时,产生所需的日志消息
        从以下版本开始:
        1.8
      • setLevel

        public void setLevel​(Level newLevel)
                      throws SecurityException
        设置日志级别,指定该记录器将记录哪些消息级别。 消息级别低于此值将被丢弃。 级别值Level.OFF可用于关闭日志记录。

        如果新级别为空,则表示该节点应从具有(非空)级别值的最近祖先继承其级别。

        参数
        newLevel - 日志级别的新值(可能为空)
        异常
        SecurityException - 如果存在安全管理员,则该记录器不是匿名的,并且调用者没有LoggingPermission(“control”)。
      • getLevel

        public Level getLevel​()
        获取为此记录器指定的日志级别。 结果可能为null,这意味着该记录器的有效级别将从其父级继承。
        结果
        这个记录器的级别
      • isLoggable

        public boolean isLoggable​(Level level)
        检查该记录器是否实际记录给定级别的消息。 此检查基于Loggers有效级别,可以从其父级继承。
        参数
        level - 消息记录级别
        结果
        如果给定的消息级别正在被记录,则为true。
      • getName

        public String getName​()
        获取此记录器的名称。
        结果
        记录器名称 匿名记录器将为空。
      • addHandler

        public void addHandler​(Handler handler)
                        throws SecurityException
        添加日志处理程序以接收日志消息。

        默认情况下,记录器还将其输出发送到其父记录器。 通常,根记录器配置有一组基本上充当所有记录器的默认处理程序的处理程序。

        参数
        handler - 一个记录处理程序
        异常
        SecurityException - 如果存在安全管理员,则该记录器不是匿名的,并且调用者没有LoggingPermission(“control”)。
      • removeHandler

        public void removeHandler​(Handler handler)
                           throws SecurityException
        删除日志处理程序。

        如果找不到给定的处理程序,则返回静默方式,否则返回null

        参数
        handler - 一个记录处理程序
        异常
        SecurityException - 如果存在安全管理员,则该记录器不是匿名的,并且调用者没有LoggingPermission(“control”)。
      • getHandlers

        public Handler[] getHandlers​()
        获取与此记录器关联的处理程序。
        结果
        所有注册的处理程序的数组
      • setUseParentHandlers

        public void setUseParentHandlers​(boolean useParentHandlers)
        指定此记录器是否应将其输出发送到其父记录器。 这意味着任何LogRecords也将被写入到父进程的处理程序中,并且可能会向其父进程递归地命名命名空间。
        参数
        useParentHandlers - 如果输出要发送到记录器的父级, useParentHandlers true。
        异常
        SecurityException - 如果安全管理器存在,则此记录器不是匿名的,并且调用者没有LoggingPermission(“control”)。
      • getUseParentHandlers

        public boolean getUseParentHandlers​()
        发现这个记录器是否将其输出发送到其父记录器。
        结果
        如果输出要发送到记录器的父级,则为true
      • setResourceBundle

        public void setResourceBundle​(ResourceBundle bundle)
        在此记录器上设置资源包。 将使用给定的资源束针对其特定的locale记录所有消息。
        参数
        bundle - 此记录器将使用的资源包。
        异常
        NullPointerException - 如果给定的包是 null
        IllegalArgumentException - 如果给定的包不具有 base name ,或者如果此记录器已经具有资源束集,但给定的包具有不同的基本名称。
        SecurityException - 如果存在安全管理员,该记录器不是匿名的,并且调用者没有LoggingPermission(“control”)。
        从以下版本开始:
        1.8
      • getParent

        public Logger getParent​()
        返回此记录器的父级。

        此方法返回命名空间中最近的父实体。 因此,如果Logger被称为“abcd”,并且已经创建了一个名为“ab”的记录器,但没有记录器“abc”,则记录器“abcd”上的调用getParent将返回记录器“ab”。

        如果在命名空间中的根记录器上调用,结果将为null。

        结果
        最近现有的父记录器
      • setParent

        public void setParent​(Logger parent)
        设置此记录器的父级。 LogManager在命名空间更改时更新Logger时使用此方法。

        不应该从应用程序代码中调用。

        参数
        parent - 新的父记录器
        异常
        SecurityException - 如果安全管理器存在,并且调用方没有LoggingPermission(“控制”)。