可以通过调用其中一种 getLogger 工厂方法来获取 Logger 对象。这些将创建一个新的记录器或返回一个合适的现有记录器。请务必注意,如果未保留对 Logger 的强引用,getLogger
工厂方法之一返回的 Logger 可能随时被垃圾回收。
日志消息将被转发到已注册的 Handler 对象,该对象可以将消息转发到各种目的地,包括控制台、文件、操作系统日志等。
每个 Logger 都跟踪一个“父”Logger,这是它在 Logger 命名空间中最近的现有祖先。
每个记录器都有一个与之关联的“级别”。这反映了该记录器关心的最低级别。如果 Logger 的级别设置为 null
,那么它的有效级别是从其父级继承的,而父级又可以从其父级递归地获取它,依此类推树。
日志级别可以根据日志配置文件中的属性进行配置,如 LogManager 类的描述中所述。但是,它也可以通过调用 Logger.setLevel 方法来动态更改。如果更改记录器的级别,则更改也可能影响子记录器,因为任何具有 null
作为其级别的子记录器将从其父级继承其有效级别。
在每次日志记录调用中,Logger 最初针对记录器的有效日志级别执行请求级别(例如,SEVERE 或 FINE)的廉价检查。如果请求级别低于日志级别,则日志调用立即返回。
通过此初始(廉价)测试后,Logger 将分配一个 LogRecord 来描述日志消息。然后它将调用过滤器(如果存在)来更详细地检查是否应发布记录。如果通过,它将发布 LogRecord 到它的输出处理程序。默认情况下,记录器也会发布到它们父级的处理程序,递归地向上树。
每个 Logger 可能有一个 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
或从其父树继承的资源包名称。
当通过 setResourceBundle
方法继承或指定 ResourceBundle
时,将使用该 ResourceBundle
。否则,如果记录器仅具有或继承资源包名称,则该资源包名称将映射到 ResourceBundle
对象,使用记录时的默认区域设置。
将资源包名称映射到 ResourceBundle
对象时,记录器将首先尝试使用线程的 上下文类加载器 将给定的资源包名称映射到 ResourceBundle
。如果线程上下文类加载器是 null
,它将尝试 系统类加载器。如果仍未找到 ResourceBundle
,它将使用 getLogger
工厂方法的第一个调用者的类加载器。
格式化(包括本地化)是输出处理程序的责任,它通常会调用格式化程序。
请注意,格式化不需要同步发生。它可能会延迟到 LogRecord 实际写入外部接收器。
日志记录方法分为五个主要类别:
有一组“日志”方法,它们采用日志级别、消息字符串和消息字符串的可选参数。
有一组类似于“log”方法的“logp”方法(用于“精确记录”),但也采用显式源类名称和方法名称。
有一组类似于“logp”方法的“logrb”方法(用于“带资源包的日志”),但也采用显式资源包对象用于本地化日志消息。
有跟踪方法入口(“进入”方法)、方法返回(“退出”方法)和抛出异常(“抛出”方法)的便捷方法。
最后,在最简单的情况下,当开发人员只想在给定的日志级别记录一个简单的字符串时,还有一组方便的方法。这些方法以标准级别名称(“严重”、“警告”、“信息”等)命名,并采用单个参数,即消息字符串。
对于不带显式源名称和方法名称的方法,Logging 框架将“尽最大努力”确定将哪个类和方法调用到日志记录方法中。然而,重要的是要认识到这种自动推断的信息可能只是近似的(甚至可能是完全错误的!)。允许虚拟机在 JITing 时进行广泛的优化,并且可能会完全删除堆栈帧,从而无法可靠地定位调用类和方法。
Logger 上的所有方法都是多线程安全的。
子类信息:请注意,LogManager 类可以为命名空间中的任何点提供自己的命名记录器实现。因此,Logger 的任何子类(除非它们是与新的 LogManager 类一起实现的)都应该注意从 LogManager 类中获取 Logger 实例,并且应该将诸如“isLoggable”和“log(LogRecord)”之类的操作委托给该实例.请注意,为了拦截所有日志记录输出,子类只需要重写 log(LogRecord) 方法。所有其他日志记录方法都作为对此 log(LogRecord) 方法的调用来实现。
- 自从:
- 1.4
-
字段摘要
字段 -
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述void
addHandler
(Handler handler) 添加一个日志处理程序来接收日志消息。void
记录 CONFIG 消息。void
记录一条 CONFIG 消息,只有当日志记录级别达到实际记录该消息时才会构造该消息。void
记录方法条目。void
使用一个参数记录一个方法条目。void
记录带有参数数组的方法条目。void
记录方法返回。void
使用结果对象记录方法返回。void
记录一条 FINE 消息。void
记录一条 FINE 消息,仅当日志记录级别达到实际记录该消息时才会构造该消息。void
记录一条 FINER 消息。void
记录一条 FINER 消息,只有在日志记录级别使得消息实际被记录时才会构造该消息。void
记录一条 FINEST 消息。void
记录一条 FINEST 消息,仅当日志记录级别达到实际记录该消息时才会构造该消息。static Logger
创建一个匿名记录器。static Logger
getAnonymousLogger
(String resourceBundleName) 创建一个匿名记录器。获取此记录器的当前过滤器。static final Logger
返回名为 Logger.GLOBAL_LOGGER_NAME 的全局记录器对象。Handler[]
获取与此记录器关联的处理程序。getLevel()
获取已为此 Logger 指定的日志级别。static Logger
为命名子系统查找或创建记录器。static Logger
为命名子系统查找或创建记录器。getName()
获取此记录器的名称。返回此 Logger 的父级。检索此记录器的本地化资源包。检索此记录器的本地化资源包名称。boolean
发现此记录器是否将其输出发送到其父记录器。void
记录一条 INFO 消息。void
记录一条 INFO 消息,仅当日志记录级别达到实际记录该消息时才会构造该消息。boolean
isLoggable
(Level level) 检查给定级别的消息是否真的会被这个记录器记录下来。void
记录一条消息,不带参数。void
使用一个对象参数记录一条消息。void
使用对象参数数组记录一条消息。void
记录一条消息,以及相关的 Throwable 信息。void
记录一个延迟构建的消息,以及相关的 Throwable 信息。void
记录一条消息,仅当日志记录级别达到实际记录该消息时才会构造该消息。void
记录日志记录。void
记录一条消息,指定源类和方法,不带参数。void
记录一条消息,指定源类和方法,并将单个对象参数添加到日志消息中。void
记录一条消息,指定源类和方法,以及一个对象参数数组。void
记录一条消息,指定源类和方法,以及关联的 Throwable 信息。void
logp
(Level level, String sourceClass, String sourceMethod, Throwable thrown, Supplier<String> msgSupplier) 记录一个延迟构建的消息,指定源类和方法,以及相关的 Throwable 信息。void
记录一条延迟构造的消息,指定源类和方法,不带参数。void
void
logrb
(Level level, String sourceClass, String sourceMethod, String bundleName, String msg, Object param1) void
logrb
(Level level, String sourceClass, String sourceMethod, String bundleName, String msg, Object[] params) void
logrb
(Level level, String sourceClass, String sourceMethod, String bundleName, String msg, Throwable thrown) void
logrb
(Level level, String sourceClass, String sourceMethod, ResourceBundle bundle, String msg, Object... params) 记录一条消息,指定源类、方法和资源包,以及可选的消息参数列表。void
logrb
(Level level, String sourceClass, String sourceMethod, ResourceBundle bundle, String msg, Throwable thrown) 记录一条消息,指定源类、方法和资源包,以及相关的 Throwable 信息。void
logrb
(Level level, ResourceBundle bundle, String msg, Object... params) 记录一条消息,指定源类、方法和资源包,以及可选的消息参数列表。void
logrb
(Level level, ResourceBundle bundle, String msg, Throwable thrown) 记录一条消息,指定源类、方法和资源包,以及相关的 Throwable 信息。void
removeHandler
(Handler handler) 删除日志处理程序。void
设置过滤器以控制此 Logger 上的输出。void
设置日志级别,指定此记录器将记录哪些消息级别。void
为此记录器设置父级。void
setResourceBundle
(ResourceBundle bundle) 在此记录器上设置资源包。void
setUseParentHandlers
(boolean useParentHandlers) 指定此记录器是否应将其输出发送到其父记录器。void
记录一条 SEVERE 消息。void
记录一条 SEVERE 消息,仅当日志记录级别达到实际记录该消息时才会构造该消息。void
记录抛出异常。void
记录警告消息。void
记录一条 WARNING 消息,仅当日志记录级别达到实际记录该消息时才会构造该消息。
-
字段详细信息
-
GLOBAL_LOGGER_NAME
GLOBAL_LOGGER_NAME 是全局记录器的名称。- 自从:
- 1.6
- 参见:
-
global
已弃用。该字段的初始化容易出现死锁。该字段必须由 Logger 类初始化进行初始化,这可能会导致与 LogManager 类初始化的死锁。在这种情况下,两个类初始化相互等待完成。获取全局记录器对象的首选方法是通过调用Logger.getGlobal()
。为了与Logger.getGlobal()
不可用的旧 JDK 版本兼容,请使用调用Logger.getLogger(Logger.GLOBAL_LOGGER_NAME)
或Logger.getLogger("global")
。提供“全局”Logger 对象是为了方便那些随意使用 Logging 包的开发人员。认真使用日志包(例如在产品中)的开发人员应该创建和使用他们自己的 Logger 对象,并使用适当的名称,以便可以在合适的每个 Logger 粒度上控制日志记录。开发人员还需要保持对其 Logger 对象的强引用,以防止它们被垃圾收集。
-
-
构造方法详细信息
-
Logger
为命名子系统构造记录器的受保护方法。记录器将初始配置为空级别并将 useParentHandlers 设置为 true。
- 参数:
name
- 记录器的名称。这应该是一个点分隔的名称,通常应该基于子系统的包名或类名,例如 java.net 或 javax.swing。对于匿名记录器,它可能为空。resourceBundleName
- 用于本地化此记录器消息的 ResourceBundle 的名称。如果没有消息需要本地化,则可能为 null。- 抛出:
MissingResourceException
- 如果 resourceBundleName 不为空且找不到对应的资源。
-
-
方法详情
-
getGlobal
返回名为 Logger.GLOBAL_LOGGER_NAME 的全局记录器对象。- 返回:
- 全局记录器对象
- 自从:
- 1.7
-
getLogger
为命名子系统查找或创建记录器。如果已经使用给定名称创建了记录器,则返回它。否则会创建一个新的记录器。如果创建了一个新的记录器,其日志级别将根据 LogManager 配置进行配置,并且还将配置为将日志记录输出发送到其父级的处理程序。它将在 LogManager 全局命名空间中注册。
注意:LogManager 可能只保留对新创建的 Logger 的弱引用。重要的是要了解,如果没有对 Logger 的强引用,以前创建的具有给定名称的 Logger 可能会随时被垃圾回收。特别是,这意味着如果在程序的其他地方没有对名为“MyLogger”的 Logger 的强引用,那么像
getLogger("MyLogger").log(...)
这样的两个背靠背调用可能会使用名为“MyLogger”的不同 Logger 对象。- 参数:
name
- 记录器的名称。这应该是一个点分隔的名称,通常应该基于子系统的包名或类名,例如 java.net 或 javax.swing- 返回:
- 一个合适的记录器
- 抛出:
NullPointerException
- 如果名称为空。
-
getLogger
为命名子系统查找或创建记录器。如果已经使用给定名称创建了记录器,则返回它。否则会创建一个新的记录器。如果创建了一个新的记录器,其日志级别将根据 LogManager 进行配置,并且还将配置为将日志记录输出发送到其父级的处理程序。它将在 LogManager 全局命名空间中注册。
注意:LogManager 可能只保留对新创建的 Logger 的弱引用。重要的是要了解,如果没有对 Logger 的强引用,以前创建的具有给定名称的 Logger 可能会随时被垃圾回收。特别是,这意味着如果在程序的其他地方没有对名为“MyLogger”的 Logger 的强引用,那么像
getLogger("MyLogger", ...).log(...)
这样的两个背靠背调用可能会使用名为“MyLogger”的不同 Logger 对象。如果指定的 Logger 已经存在并且还没有本地化资源包,则使用给定的资源包名称。如果指定的 Logger 已经存在并且具有不同的资源包名称,则会抛出 IllegalArgumentException。
- 参数:
name
- 记录器的名称。这应该是一个点分隔的名称,通常应该基于子系统的包名或类名,例如 java.net 或 javax.swingresourceBundleName
- 用于本地化此记录器消息的 ResourceBundle 的名称。如果没有消息需要本地化,则可能是null
。- 返回:
- 一个合适的记录器
- 抛出:
MissingResourceException
- 如果 resourceBundleName 不为空且找不到对应的资源。IllegalArgumentException
- 如果 Logger 已经存在并使用不同的资源包名称;或者如果resourceBundleName
是null
但指定的记录器有一个资源包集。NullPointerException
- 如果名称为空。
-
getAnonymousLogger
创建一个匿名记录器。新创建的 Logger 没有在 LogManager 命名空间中注册。不会对记录器的更新进行访问检查。此工厂方法主要供小应用程序使用。因为生成的 Logger 是匿名的,所以创建类可以将其保密。这消除了对正常安全检查的需要,这反过来又允许不受信任的小程序代码更新 Logger 的控制状态。例如,applet 可以对匿名记录器执行 setLevel 或 addHandler。
尽管新记录器是匿名的,但它被配置为将根记录器 ("") 作为其父记录器。这意味着默认情况下它从根记录器继承其有效级别和处理程序。通过
setParent
方法更改其父级仍需要该方法指定的安全权限。- 返回:
- 一个新创建的私有记录器
-
getAnonymousLogger
创建一个匿名记录器。新创建的 Logger 没有在 LogManager 命名空间中注册。不会对记录器的更新进行访问检查。此工厂方法主要供小应用程序使用。因为生成的 Logger 是匿名的,所以创建类可以将其保密。这消除了对正常安全检查的需要,这反过来又允许不受信任的小程序代码更新 Logger 的控制状态。例如,applet 可以对匿名记录器执行 setLevel 或 addHandler。
尽管新记录器是匿名的,但它被配置为将根记录器 ("") 作为其父记录器。这意味着默认情况下它从根记录器继承其有效级别和处理程序。通过
setParent
方法更改其父级仍需要该方法指定的安全权限。- 参数:
resourceBundleName
- 用于本地化此记录器消息的 ResourceBundle 的名称。如果没有消息需要本地化,则可能为 null。- 返回:
- 一个新创建的私有记录器
- 抛出:
MissingResourceException
- 如果 resourceBundleName 不为空且找不到对应的资源。
-
getResourceBundle
检索此记录器的本地化资源包。此方法将返回一个ResourceBundle
,它由setResourceBundle
方法设置或通过getLogger
工厂方法为当前默认区域设置的 从资源包名称映射 设置。
请注意,如果结果为null
,则 Logger 将使用从其父级继承的资源包或资源包名称。- 返回:
-
本地化包(可能是
null
)
-
getResourceBundleName
检索此记录器的本地化资源包名称。这要么是通过getLogger
工厂方法指定的名称,要么是通过setResourceBundle
方法设置的ResourceBundle的基本名称。
请注意,如果结果为null
,则 Logger 将使用从其父级继承的资源包或资源包名称。- 返回:
-
本地化包名称(可能是
null
)
-
setFilter
设置过滤器以控制此 Logger 上的输出。通过初始“级别”检查后,Logger 将调用此 Filter 来检查日志记录是否真的应该发布。
- 参数:
newFilter
- 过滤器对象(可能为空)- 抛出:
SecurityException
- 如果存在安全管理器,则此记录器不是匿名的,并且调用者没有 LoggingPermission("control")。
-
getFilter
获取此记录器的当前过滤器。- 返回:
- 过滤器对象(可能为空)
-
log
记录日志记录。此类中的所有其他日志记录方法通过此方法调用以实际执行任何日志记录。子类可以重写这个单一方法来捕获所有日志活动。
- 参数:
record
- 要发布的日志记录
-
log
记录一条消息,不带参数。如果当前为给定的消息级别启用了记录器,则给定的消息将转发到所有已注册的输出处理程序对象。
- 参数:
level
- 消息级别标识符之一,例如 SEVEREmsg
- 字符串消息(或消息目录中的键)
-
log
记录一条消息,仅当日志记录级别达到实际记录该消息时才会构造该消息。如果当前为给定的消息级别启用了记录器,则通过调用提供的供应商函数构造消息并将其转发给所有已注册的输出处理程序对象。
- 参数:
level
- 消息级别标识符之一,例如 SEVEREmsgSupplier
- 调用时生成所需日志消息的函数- 自从:
- 1.8
-
log
使用一个对象参数记录一条消息。如果当前为给定的消息级别启用了记录器,则会创建相应的 LogRecord 并将其转发给所有已注册的输出处理程序对象。
- 参数:
level
- 消息级别标识符之一,例如 SEVEREmsg
- 字符串消息(或消息目录中的键)param1
- 消息的参数
-
log
使用对象参数数组记录一条消息。如果当前为给定的消息级别启用了记录器,则会创建相应的 LogRecord 并将其转发给所有已注册的输出处理程序对象。
- 参数:
level
- 消息级别标识符之一,例如 SEVEREmsg
- 字符串消息(或消息目录中的键)params
- 消息的参数数组
-
log
记录一条消息,以及相关的 Throwable 信息。如果当前为给定的消息级别启用了记录器,那么给定的参数将存储在 LogRecord 中,该日志记录将转发给所有已注册的输出处理程序。
请注意,抛出的参数存储在 LogRecord 抛出属性中,而不是 LogRecord parameters 属性中。因此,它由输出格式化程序专门处理,不被视为 LogRecord 消息属性的格式化参数。
- 参数:
level
- 消息级别标识符之一,例如 SEVEREmsg
- 字符串消息(或消息目录中的键)thrown
- 与日志消息关联的 Throwable。
-
log
记录一个延迟构建的消息,以及相关的 Throwable 信息。如果当前为给定的消息级别启用了记录器,则通过调用提供的供应商函数来构造消息。消息和给定的
Throwable
然后存储在LogRecord
中,转发给所有已注册的输出处理程序。请注意,抛出的参数存储在 LogRecord 抛出属性中,而不是 LogRecord parameters 属性中。因此,它由输出格式化程序专门处理,不被视为 LogRecord 消息属性的格式化参数。
- 参数:
level
- 消息级别标识符之一,例如 SEVEREthrown
- 与日志消息关联的 Throwable。msgSupplier
- 调用时生成所需日志消息的函数- 自从:
- 1.8
-
logp
记录一条消息,指定源类和方法,不带参数。如果当前为给定的消息级别启用了记录器,则给定的消息将转发到所有已注册的输出处理程序对象。
- 参数:
level
- 消息级别标识符之一,例如 SEVEREsourceClass
- 发出日志记录请求的类的名称sourceMethod
- 发出日志记录请求的方法的名称msg
- 字符串消息(或消息目录中的键)
-
logp
public void logp(Level level, String sourceClass, String sourceMethod, Supplier <String > msgSupplier) 记录一条延迟构造的消息,指定源类和方法,不带参数。如果当前为给定的消息级别启用了记录器,则通过调用提供的供应商函数构造消息并将其转发给所有已注册的输出处理程序对象。
- 参数:
level
- 消息级别标识符之一,例如 SEVEREsourceClass
- 发出日志记录请求的类的名称sourceMethod
- 发出日志记录请求的方法的名称msgSupplier
- 调用时生成所需日志消息的函数- 自从:
- 1.8
-
logp
记录一条消息,指定源类和方法,并将单个对象参数添加到日志消息中。如果当前为给定的消息级别启用了记录器,则会创建相应的 LogRecord 并将其转发给所有已注册的输出处理程序对象。
- 参数:
level
- 消息级别标识符之一,例如 SEVEREsourceClass
- 发出日志记录请求的类的名称sourceMethod
- 发出日志记录请求的方法的名称msg
- 字符串消息(或消息目录中的键)param1
- 日志消息的参数。
-
logp
public void logp(Level level, String sourceClass, String sourceMethod, String msg, Object [] params) 记录一条消息,指定源类和方法,以及一个对象参数数组。如果当前为给定的消息级别启用了记录器,则会创建相应的 LogRecord 并将其转发给所有已注册的输出处理程序对象。
- 参数:
level
- 消息级别标识符之一,例如 SEVEREsourceClass
- 发出日志记录请求的类的名称sourceMethod
- 发出日志记录请求的方法的名称msg
- 字符串消息(或消息目录中的键)params
- 消息的参数数组
-
logp
public void logp(Level level, String sourceClass, String sourceMethod, String msg, Throwable thrown) 记录一条消息,指定源类和方法,以及关联的 Throwable 信息。如果当前为给定的消息级别启用了记录器,那么给定的参数将存储在 LogRecord 中,该日志记录将转发给所有已注册的输出处理程序。
请注意,抛出的参数存储在 LogRecord 抛出属性中,而不是 LogRecord parameters 属性中。因此,它由输出格式化程序专门处理,不被视为 LogRecord 消息属性的格式化参数。
- 参数:
level
- 消息级别标识符之一,例如 SEVEREsourceClass
- 发出日志记录请求的类的名称sourceMethod
- 发出日志记录请求的方法的名称msg
- 字符串消息(或消息目录中的键)thrown
- 与日志消息关联的 Throwable。
-
logp
public void logp(Level level, String sourceClass, String sourceMethod, Throwable thrown, Supplier <String > msgSupplier) 记录一个延迟构建的消息,指定源类和方法,以及相关的 Throwable 信息。如果当前为给定的消息级别启用了记录器,则通过调用提供的供应商函数来构造消息。消息和给定的
Throwable
然后存储在LogRecord
中,转发给所有已注册的输出处理程序。请注意,抛出的参数存储在 LogRecord 抛出属性中,而不是 LogRecord parameters 属性中。因此,它由输出格式化程序专门处理,不被视为 LogRecord 消息属性的格式化参数。
- 参数:
level
- 消息级别标识符之一,例如 SEVEREsourceClass
- 发出日志记录请求的类的名称sourceMethod
- 发出日志记录请求的方法的名称thrown
- 与日志消息关联的 Throwable。msgSupplier
- 调用时生成所需日志消息的函数- 自从:
- 1.8
-
logrb
@Deprecated public void logrb(Level level, String sourceClass, String sourceMethod, String bundleName, String msg) 记录一条消息,指定不带参数的源类、方法和资源包名称。如果当前为给定的消息级别启用了记录器,则给定的消息将转发到所有已注册的输出处理程序对象。
msg 字符串使用指定的资源包进行本地化。如果资源包名称为 null、空字符串或无效,则消息字符串未本地化。
- 参数:
level
- 消息级别标识符之一,例如 SEVEREsourceClass
- 发出日志记录请求的类的名称sourceMethod
- 发出日志记录请求的方法的名称bundleName
- 本地化消息的资源包名称,可以为空msg
- 字符串消息(或消息目录中的键)
-
logrb
@Deprecated public void logrb(Level level, String sourceClass, String sourceMethod, String bundleName, String msg, Object param1) 记录一条消息,指定源类、方法和资源包名称,并将单个对象参数添加到日志消息中。如果当前为给定的消息级别启用了记录器,则会创建相应的 LogRecord 并将其转发给所有已注册的输出处理程序对象。
msg 字符串使用指定的资源包进行本地化。如果资源包名称为 null、空字符串或无效,则消息字符串未本地化。
- 参数:
level
- 消息级别标识符之一,例如 SEVEREsourceClass
- 发出日志记录请求的类的名称sourceMethod
- 发出日志记录请求的方法的名称bundleName
- 本地化消息的资源包名称,可以为空msg
- 字符串消息(或消息目录中的键)param1
- 日志消息的参数。
-
logrb
@Deprecated public void logrb(Level level, String sourceClass, String sourceMethod, String bundleName, String msg, Object [] params) 记录一条消息,指定源类、方法和资源包名称,以及一个对象参数数组。如果当前为给定的消息级别启用了记录器,则会创建相应的 LogRecord 并将其转发给所有已注册的输出处理程序对象。
msg 字符串使用指定的资源包进行本地化。如果资源包名称为 null、空字符串或无效,则消息字符串未本地化。
- 参数:
level
- 消息级别标识符之一,例如 SEVEREsourceClass
- 发出日志记录请求的类的名称sourceMethod
- 发出日志记录请求的方法的名称bundleName
- 本地化消息的资源包名称,可以为空。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
记录一条消息,指定源类、方法和资源包,以及可选的消息参数列表。如果当前为给定消息
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 中,该日志记录将转发给所有已注册的输出处理程序。
msg 字符串使用指定的资源包进行本地化。如果资源包名称为 null、空字符串或无效,则消息字符串未本地化。
请注意,抛出的参数存储在 LogRecord 抛出属性中,而不是 LogRecord parameters 属性中。因此,它由输出格式化程序专门处理,不被视为 LogRecord 消息属性的格式化参数。
- 参数:
level
- 消息级别标识符之一,例如 SEVEREsourceClass
- 发出日志记录请求的类的名称sourceMethod
- 发出日志记录请求的方法的名称bundleName
- 本地化消息的资源包名称,可以为空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
记录一条消息,指定源类、方法和资源包,以及相关的 Throwable 信息。如果当前为给定消息
level
启用了记录器,则给定参数存储在LogRecord
中,转发给所有已注册的输出处理程序。msg
字符串使用给定的资源包进行了本地化。如果资源包是null
,则msg
字符串未本地化。请注意,
thrown
参数存储在LogRecord
thrown
属性中,而不是LogRecord
parameters
属性中。因此,它由输出Formatter
对象专门处理,不被视为LogRecord
message
属性的格式化参数。- 参数:
level
- 消息级别标识符之一,例如SEVERE
bundle
- 用于本地化msg
的资源包;可以是null
。msg
- 字符串消息(或消息目录中的键)thrown
- 与日志消息关联的 Throwable。- 自从:
- 9
-
entering
记录方法条目。这是一种方便的方法,可用于记录方法的入口。记录带有消息“ENTRY”、日志级别 FINER 以及给定的 sourceMethod 和 sourceClass 的 LogRecord。
- 参数:
sourceClass
- 发出日志记录请求的类的名称sourceMethod
- 正在输入的方法名称
-
entering
使用一个参数记录一个方法条目。这是一种方便的方法,可用于记录方法的入口。记录带有消息“ENTRY {0}”、日志级别 FINER 和给定 sourceMethod、sourceClass 和参数的 LogRecord。
- 参数:
sourceClass
- 发出日志记录请求的类的名称sourceMethod
- 正在输入的方法名称param1
- 正在输入的方法的参数
-
entering
记录带有参数数组的方法条目。这是一种方便的方法,可用于记录方法的入口。记录带有消息“ENTRY”(后跟参数数组中每个条目的格式 {N} 指示符)、日志级别 FINER 和给定的 sourceMethod、sourceClass 和参数的 LogRecord。
- 参数:
sourceClass
- 发出日志记录请求的类的名称sourceMethod
- 正在输入的方法名称params
- 正在输入的方法的参数数组
-
exiting
记录方法返回。这是一种方便的方法,可用于记录从方法返回的信息。记录带有消息“RETURN”、日志级别 FINER 以及给定的 sourceMethod 和 sourceClass 的 LogRecord。
- 参数:
sourceClass
- 发出日志记录请求的类的名称sourceMethod
- 方法名称
-
exiting
使用结果对象记录方法返回。这是一种方便的方法,可用于记录从方法返回的信息。记录带有消息“RETURN {0}”、日志级别 FINER 以及给定的 sourceMethod、sourceClass 和结果对象的 LogRecord。
- 参数:
sourceClass
- 发出日志记录请求的类的名称sourceMethod
- 方法名称result
- 正在返回的对象
-
throwing
记录抛出异常。这是一种记录方法正在通过抛出异常终止的便捷方法。日志记录是使用 FINER 级别完成的。
如果当前为给定的消息级别启用了记录器,那么给定的参数将存储在 LogRecord 中,该日志记录将转发给所有已注册的输出处理程序。 LogRecord 的消息设置为“THROW”。
请注意,抛出的参数存储在 LogRecord 抛出属性中,而不是 LogRecord parameters 属性中。因此,它由输出格式化程序专门处理,不被视为 LogRecord 消息属性的格式化参数。
- 参数:
sourceClass
- 发出日志记录请求的类的名称sourceMethod
- 方法的名称。thrown
- 被抛出的 Throwable。
-
severe
记录一条 SEVERE 消息。如果当前为 SEVERE 消息级别启用了记录器,则给定消息将转发到所有已注册的输出处理程序对象。
- 参数:
msg
- 字符串消息(或消息目录中的键)
-
warning
记录警告消息。如果当前为 WARNING 消息级别启用了记录器,则给定消息将转发到所有已注册的输出处理程序对象。
- 参数:
msg
- 字符串消息(或消息目录中的键)
-
info
记录一条 INFO 消息。如果当前为 INFO 消息级别启用了记录器,则给定消息将转发到所有已注册的输出处理程序对象。
- 参数:
msg
- 字符串消息(或消息目录中的键)
-
config
记录 CONFIG 消息。如果当前为 CONFIG 消息级别启用了记录器,则给定消息将转发到所有已注册的输出处理程序对象。
- 参数:
msg
- 字符串消息(或消息目录中的键)
-
fine
记录一条 FINE 消息。如果当前为 FINE 消息级别启用了记录器,则给定消息将转发到所有已注册的输出处理程序对象。
- 参数:
msg
- 字符串消息(或消息目录中的键)
-
finer
记录一条 FINER 消息。如果当前为 FINER 消息级别启用了记录器,则给定消息将转发到所有已注册的输出处理程序对象。
- 参数:
msg
- 字符串消息(或消息目录中的键)
-
finest
记录一条 FINEST 消息。如果当前为 FINEST 消息级别启用了记录器,则给定消息将转发到所有已注册的输出处理程序对象。
- 参数:
msg
- 字符串消息(或消息目录中的键)
-
severe
记录一条 SEVERE 消息,仅当日志记录级别达到实际记录该消息时才会构造该消息。如果当前为 SEVERE 消息级别启用了记录器,则通过调用提供的供应商函数构造消息并将其转发到所有已注册的输出处理程序对象。
- 参数:
msgSupplier
- 调用时生成所需日志消息的函数- 自从:
- 1.8
-
warning
记录一条 WARNING 消息,仅当日志记录级别达到实际记录该消息时才会构造该消息。如果当前为 WARNING 消息级别启用了记录器,则通过调用提供的供应商函数构造消息并将其转发到所有已注册的输出处理程序对象。
- 参数:
msgSupplier
- 调用时生成所需日志消息的函数- 自从:
- 1.8
-
info
记录一条 INFO 消息,仅当日志记录级别达到实际记录该消息时才会构造该消息。如果当前为 INFO 消息级别启用了记录器,则通过调用提供的供应商函数构造消息并将其转发到所有已注册的输出处理程序对象。
- 参数:
msgSupplier
- 调用时生成所需日志消息的函数- 自从:
- 1.8
-
config
记录一条 CONFIG 消息,只有当日志记录级别达到实际记录该消息时才会构造该消息。如果当前为 CONFIG 消息级别启用了记录器,则通过调用提供的供应商函数构造消息,并将其转发给所有已注册的输出处理程序对象。
- 参数:
msgSupplier
- 调用时生成所需日志消息的函数- 自从:
- 1.8
-
fine
记录一条 FINE 消息,仅当日志记录级别达到实际记录该消息时才会构造该消息。如果当前为 FINE 消息级别启用了记录器,则通过调用提供的供应商函数构造消息并将其转发到所有已注册的输出处理程序对象。
- 参数:
msgSupplier
- 调用时生成所需日志消息的函数- 自从:
- 1.8
-
finer
记录一条 FINER 消息,只有在日志记录级别使得消息实际被记录时才会构造该消息。如果当前为 FINER 消息级别启用了记录器,则通过调用提供的供应商函数构造消息并将其转发到所有已注册的输出处理程序对象。
- 参数:
msgSupplier
- 调用时生成所需日志消息的函数- 自从:
- 1.8
-
finest
记录一条 FINEST 消息,仅当日志记录级别达到实际记录该消息时才会构造该消息。如果当前为 FINEST 消息级别启用了记录器,则通过调用提供的供应商函数构造消息并将其转发到所有已注册的输出处理程序对象。
- 参数:
msgSupplier
- 调用时生成所需日志消息的函数- 自从:
- 1.8
-
setLevel
设置日志级别,指定此记录器将记录哪些消息级别。低于此值的消息级别将被丢弃。级别值 Level.OFF 可用于关闭日志记录。如果新级别为空,则意味着该节点应从其具有特定(非空)级别值的最近祖先继承其级别。
- 参数:
newLevel
- 日志级别的新值(可能为空)- 抛出:
SecurityException
- 如果存在安全管理器,则此记录器不是匿名的,并且调用者没有 LoggingPermission("control")。
-
getLevel
获取已为此 Logger 指定的日志级别。结果可能为空,这意味着此记录器的有效级别将从其父级继承。- 返回:
- 这个 Logger 的级别
-
isLoggable
检查给定级别的消息是否真的会被这个记录器记录下来。此检查基于 Loggers 有效级别,该级别可能继承自其父级。- 参数:
level
- 消息记录级别- 返回:
- 如果当前正在记录给定的消息级别,则为真。
-
getName
获取此记录器的名称。- 返回:
- 记录器名称。对于匿名 Loggers 将为 null。
-
addHandler
添加一个日志处理程序来接收日志消息。默认情况下,记录器还将它们的输出发送到它们的父记录器。通常,根记录器配置有一组处理程序,这些处理程序基本上充当所有记录器的默认处理程序。
- 参数:
handler
- 日志处理程序- 抛出:
SecurityException
- 如果存在安全管理器,则此记录器不是匿名的,并且调用者没有 LoggingPermission("control")。
-
removeHandler
删除日志处理程序。如果给定的处理程序未找到或为空,则静默返回
- 参数:
handler
- 日志处理程序- 抛出:
SecurityException
- 如果存在安全管理器,则此记录器不是匿名的,并且调用者没有 LoggingPermission("control")。
-
getHandlers
获取与此记录器关联的处理程序。- 返回:
- 所有已注册处理程序的数组
-
setUseParentHandlers
public void setUseParentHandlers(boolean useParentHandlers) 指定此记录器是否应将其输出发送到其父记录器。这意味着任何 LogRecords 也将被写入父级的处理程序,并可能递归地写入其父级,向上递归命名空间。- 参数:
useParentHandlers
- 如果要将输出发送到记录器的父级,则为真。- 抛出:
SecurityException
- 如果存在安全管理器,则此记录器不是匿名的,并且调用者没有 LoggingPermission("control")。
-
getUseParentHandlers
public boolean getUseParentHandlers()发现此记录器是否将其输出发送到其父记录器。- 返回:
- 如果要将输出发送到记录器的父级,则为真
-
setResourceBundle
在此记录器上设置资源包。所有消息都将使用其特定 locale 的给定资源包进行记录。- 参数:
bundle
- 此记录器应使用的资源包。- 抛出:
NullPointerException
- 如果给定的包是null
。IllegalArgumentException
- 如果给定的包没有 基本名称 ,或者如果此记录器已经设置了资源包但给定的包具有不同的基本名称。SecurityException
- 如果存在安全管理器,则此记录器不是匿名的,并且调用者没有 LoggingPermission("control")。- 自从:
- 1.8
-
getParent
返回此 Logger 的父级。此方法返回命名空间中最近的现存父级。因此,如果一个名为“abcd”的记录器,并且已经创建了一个名为“ab”的记录器,但不存在记录器“abc”,那么在记录器“abcd”上调用 getParent 将返回记录器“ab”。
如果在命名空间中的根 Logger 上调用,结果将为 null。
- 返回:
- 最近的现有父记录器
-
setParent
为此记录器设置父级。 LogManager 使用此方法在名称空间更改时更新 Logger。不应从应用程序代码中调用它。
- 参数:
parent
- 新的父记录器- 抛出:
SecurityException
- 如果存在安全管理器并且调用者没有 LoggingPermission("control")。
-