模块  java.logging
软件包  java.util.logging

Class Logger


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

    可以通过调用其中一个getLogger工厂方法来获取Logger对象。 这些将创建一个新的Logger或返回一个合适的现有Logger。 请务必注意,如果未保留对Logger的强引用,则可以随时对其中一个getLogger工厂方法返回的Logger进行垃圾回收。

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

    每个Logger都会跟踪“父”Logger,它是Logger命名空间中最近的现有祖先。

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

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

    在每次记录调用时,Logger最初会根据记录器的有效日志级别对请求级别(例如,SEVERE或FINE)执行廉价检查。 如果请求级别低于日志级别,则日志记录调用立即返回。

    在通过此初始(廉价)测试后,Logger将分配一个LogRecord来描述日志消息。 然后,它将调用过滤器(如果存在)以更详细地检查是否应该发布记录。 如果通过它,则会将LogRecord发布到其输出处理程序。 默认情况下,记录器还会以递归方式向上发布到其父级的处理程序。

    每个记录器可能有一个ResourceBundle关联的ResourceBundle ResourceBundle可以通过名称,使用getLogger(java.lang.String, java.lang.String)工厂方法或值 - 使用setResourceBundle方法指定。 此捆绑包将用于本地化日志记录消息。 如果Logger没有自己的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对象时,记录器将首先尝试使用Thread的context class loader将给定的资源包名称映射到ResourceBundle 如果线程上下文类加载器是null ,它将尝试system class loader 如果仍未找到ResourceBundle ,它将使用getLogger工厂方法的第一个调用者的类加载器。

    格式化(包括本地化)是输出处理程序的责任,它通常会调用Formatter。

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

    记录方法分为五大类:

    • 有一组“日志”方法,它们将日志级别,消息字符串和可选的一些参数带到消息字符串中。

    • 有一组“logp”方法(对于“log precise”)类似于“log”方法,但也采用显式的源类名和方法名。

    • 有一组“logrb”方法(用于“log with resource bundle”)类似于“logp”方法,但也采用显式资源包对象用于本地化日志消息。

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

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

    对于不采用显式源名称和方法名称的方法,Logging框架将“尽最大努力”确定调用日志记录方法的类和方法。 但是,重要的是要意识到这种自动推断的信息可能只是近似的(甚至可能是非常错误的!)。 允许虚拟机在JITing时进行广泛的优化,并且可以完全删除堆栈帧,从而无法可靠地定位调用类和方法。

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

    子类信息:请注意,LogManager类可以为命名空间中的任何点提供自己的命名Logger实现。 因此,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
        另请参见:
        常数字段值
      • global

        @Deprecated
        public static final Logger global
        Deprecated.
        Initialization of this field is prone to deadlocks. The field must be initialized by the Logger class initialization which may cause deadlocks with the LogManager class initialization. In such cases two class initialization wait for each other to complete. The preferred way to get the global logger object is via the call Logger.getGlobal(). For compatibility with old JDK versions where the Logger.getGlobal() is not available use the call Logger.getLogger(Logger.GLOBAL_LOGGER_NAME) or Logger.getLogger("global").
        提供“全局”Logger对象是为了方便开发人员随意使用Logging包。 正在认真使用日志包(例如在产品中)的开发人员应该创建和使用自己的Logger对象,并使用适当的名称,以便可以在适当的每Logger粒度上控制日志记录。 开发人员还需要对其Logger对象保持强引用,以防止它们被垃圾回收。
    • 构造方法详细信息

      • Logger

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

        记录器最初将配置为null Level,并且useParentHandlers设置为true。

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

      • 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进行垃圾收集。 特别是,这意味着如果在程序的其他位置没有对名为“MyLogger”的Logger的强引用,则可能会使用名为“MyLogger”的两个背靠背调用(如getLogger("MyLogger").log(...)

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

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

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

        注意:LogManager可能只保留对新创建的Logger的弱引用。 重要的是要理解,如果没有对Logger的强引用,则可以随时对先前创建的具有给定名称的Logger进行垃圾收集。 特别是,这意味着如果在程序的其他位置没有对名为“MyLogger”的Logger的强引用,则像getLogger("MyLogger", ...).log(...)这样的两个背对背调用可能会使用名为“MyLogger”的不同Logger对象。

        如果指定的Logger已存在且尚未具有本地化资源包,则使用给定的资源包名称。 如果指定的Logger已存在且具有不同的资源包名称,则抛出IllegalArgumentException。

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

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

        此工厂方法主要用于applet。 由于生成的Logger是匿名的,因此创建类可以保持私有。 这消除了对正常安全检查的需要,这反过来又允许不受信任的applet代码更新Logger的控制状态。 例如,applet可以在匿名Logger上执行setLevel或addHandler。

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

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

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

        此工厂方法主要用于applet。 由于生成的Logger是匿名的,因此创建类可以保持私有。 这消除了对正常安全检查的需要,这反过来又允许不受信任的applet代码更新Logger的控制状态。 例如,applet可以在匿名Logger上执行setLevel或addHandler。

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

        参数
        resourceBundleName - 用于本地化此记录器的消息的ResourceBundle的名称。 如果没有消息需要本地化,则可以为null。
        结果
        一个新创建的私有Logger
        异常
        MissingResourceException - 如果resourceBundleName为非null且找不到相应的资源。
      • 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 ,则Logger将使用从其父级继承的资源包或资源包名称。
        结果
        本地化包名称(可能是 null
      • setFilter

        public void setFilter​(Filter newFilter)
                       throws SecurityException
        设置过滤器以控制此Logger上的输出。

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

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

        public Filter getFilter()
        获取此Logger的当前过滤器。
        结果
        过滤器对象(可以为null)
      • 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 thrown属性中,而不是LogRecord参数属性中。 因此,它由输出格式化程序专门处理,不被视为LogRecord消息属性的格式化参数。

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

        public void log​(Level level,
                        Throwable thrown,
                        Supplier<String> msgSupplier)
        使用关联的Throwable信息记录延迟构造的消息。

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

        请注意,抛出的参数存储在LogRecord thrown属性中,而不是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 thrown属性中,而不是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 thrown属性中,而不是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字符串使用指定的资源包进行本地化。 如果资源包名称为null,或者为空String或无效,则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字符串使用指定的资源包进行本地化。 如果资源包名称为null,或者为空String或无效,则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字符串使用指定的资源包进行本地化。 如果资源包名称为null,或者为空String或无效,则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 - 消息的参数(可选,可以为none)。
        从以下版本开始:
        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 - 消息的参数(可选,可以为none)。
        从以下版本开始:
        9
      • logrb

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

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

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

        请注意,抛出的参数存储在LogRecord thrown属性中,而不是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”,日志级别FINER以及给定sourceMethod和sourceClass的LogRecord。

        参数
        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”的LogRecord(后跟参数数组中每个条目的格式{N}指示符),日志级别FINER以及给定的sourceMethod,sourceClass和参数。

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

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

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

        参数
        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 thrown属性中,而不是LogRecord参数属性中。 因此,它由输出格式化程序专门处理,不被视为LogRecord消息属性的格式化参数。

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

        public void severe​(String msg)
        记录严重消息。

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

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

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

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

        参数
        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消息级别,则给定消息将转发到所有已注册的输出处理程序对象。

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

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

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

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

        public void finest​(String msg)
        记录最好的消息。

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

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

        public void severe​(Supplier<String> msgSupplier)
        记录SEVERE消息,该消息仅在日志记录级别实际记录消息时才构建。

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

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

        public void warning​(Supplier<String> msgSupplier)
        记录一条WARNING消息,该消息仅在日志记录级别实际记录消息时才构建。

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

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

        public void info​(Supplier<String> msgSupplier)
        记录一条INFO消息,该消息仅在日志记录级别实际记录消息时才构建。

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

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

        public void config​(Supplier<String> msgSupplier)
        记录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消息级别启用了记录器,则通过调用提供的供应商功能构建消息并将其转发到所有已注册的输出处理程序对象。

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

        public void finest​(Supplier<String> msgSupplier)
        记录FINEST消息,该消息仅在日志记录级别实际记录消息时才构建。

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

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

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

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

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

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

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

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

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

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

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

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

        如果找不到给定的Handler或为null,则以静默方式返回

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

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

        public void setUseParentHandlers​(boolean useParentHandlers)
        指定此记录器是否应将其输出发送到其父Logger。 这意味着任何LogRecords也将被写入父级的Handler,并可能以其递归方式向其父级添加。
        参数
        useParentHandlers - 如果 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的父级。

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

        如果在命名空间中的根Logger上调用它,则结果为null。

        结果
        最近的父记录器
      • setParent

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

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

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