public class Logger extends Object
Logger对象可以通过getLogger工厂方法之一的调用获得。 这些将创建一个新的Logger或返回一个合适的现有Logger。 重要的是要注意,如果没有保存对Logger的强烈引用,那么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
对象时,记录器将首先尝试使用Thread的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)方法的调用。
Modifier and Type | Field and Description |
---|---|
static Logger |
global
已弃用
此字段的初始化容易出现死锁。
该字段必须由Logger类初始化初始化,这可能会导致与LogManager类初始化的死锁。
在这种情况下,两个类初始化等待彼此完成。
获取全局记录器对象的首选方法是通过调用
Logger.getGlobal() 。
对于旧的JDK版本的兼容性,其中Logger.getGlobal() 不可使用电话Logger.getLogger(Logger.GLOBAL_LOGGER_NAME) 或Logger.getLogger("global") 。
|
static String |
GLOBAL_LOGGER_NAME
GLOBAL_LOGGER_NAME是全球记录器的名称。
|
Modifier | Constructor and Description |
---|---|
protected |
Logger(String name, String resourceBundleName)
构建命名子系统的记录器的受保护方法。
|
Modifier and Type | Method and Description |
---|---|
void |
addHandler(Handler handler)
添加日志处理程序以接收日志消息。
|
void |
config(String msg)
记录CONFIG消息。
|
void |
config(Supplier<String> msgSupplier)
记录一个CONFIG消息,只有在记录级别实际上记录该消息时,才能构建一个CONFIG消息。
|
void |
entering(String sourceClass, String sourceMethod)
记录方法条目。
|
void |
entering(String sourceClass, String sourceMethod, Object param1)
使用一个参数记录方法条目。
|
void |
entering(String sourceClass, String sourceMethod, Object[] params)
使用参数数组记录方法条目。
|
void |
exiting(String sourceClass, String sourceMethod)
记录方法返回。
|
void |
exiting(String sourceClass, String sourceMethod, Object result)
使用结果对象记录方法返回。
|
void |
fine(String msg)
记录一个FINE消息。
|
void |
fine(Supplier<String> msgSupplier)
记录一个FINE消息,只有在记录级别实际上记录该消息时才会被构造。
|
void |
finer(String msg)
记录一个FINER消息。
|
void |
finer(Supplier<String> msgSupplier)
记录一个FINER消息,只有在记录级别实际上记录该消息时,才会构建一个FINER消息。
|
void |
finest(String msg)
记录一条FINEST消息。
|
void |
finest(Supplier<String> msgSupplier)
记录一个FINEST消息,只有当记录级别实际上记录消息时,才能构建FINEST消息。
|
static Logger |
getAnonymousLogger()
创建一个匿名记录器。
|
static Logger |
getAnonymousLogger(String resourceBundleName)
创建一个匿名记录器。
|
Filter |
getFilter()
获取此Logger的当前过滤器。
|
static Logger |
getGlobal()
返回名为Logger.GLOBAL_LOGGER_NAME的全局记录器对象。
|
Handler[] |
getHandlers()
获取与此记录器关联的处理程序。
|
Level |
getLevel()
获取为此记录器指定的日志级别。
|
static Logger |
getLogger(String name)
查找或创建一个命名子系统的记录器。
|
static Logger |
getLogger(String name, String resourceBundleName)
查找或创建一个命名子系统的记录器。
|
String |
getName()
获取此记录器的名称。
|
Logger |
getParent()
返回此记录器的父级。
|
ResourceBundle |
getResourceBundle()
检索此记录器的本地化资源包。
|
String |
getResourceBundleName()
检索此记录器的本地化资源包名称。
|
boolean |
getUseParentHandlers()
发现这个记录器是否将其输出发送到其父记录器。
|
void |
info(String msg)
记录INFO消息。
|
void |
info(Supplier<String> msgSupplier)
记录INFO消息,只有在记录级别实际记录消息时,才能构建INFO消息。
|
boolean |
isLoggable(Level level)
检查该记录器是否实际记录给定级别的消息。
|
void |
log(Level level, String msg)
记录消息,没有参数。
|
void |
log(Level level, String msg, Object param1)
使用一个对象参数记录消息。
|
void |
log(Level level, String msg, Object[] params)
用一个对象参数数组记录消息。
|
void |
log(Level level, String msg, Throwable thrown)
使用相关联的Throwable信息记录消息。
|
void |
log(Level level, Supplier<String> msgSupplier)
记录一条消息,只有在记录级别实际上记录该消息时才会被构造。
|
void |
log(Level level, Throwable thrown, Supplier<String> msgSupplier)
记录一个懒惰构造的消息,并附带相关的Throwable信息。
|
void |
log(LogRecord record)
登录LogRecord。
|
void |
logp(Level level, String sourceClass, String sourceMethod, String msg)
记录消息,指定源类和方法,没有参数。
|
void |
logp(Level level, String sourceClass, String sourceMethod, String msg, Object param1)
使用单个对象参数记录消息,指定源类和方法到日志消息。
|
void |
logp(Level level, String sourceClass, String sourceMethod, String msg, Object[] params)
使用对象参数数组记录消息,指定源类和方法。
|
void |
logp(Level level, String sourceClass, String sourceMethod, String msg, Throwable thrown)
使用相关联的Throwable信息记录消息,指定源类和方法。
|
void |
logp(Level level, String sourceClass, String sourceMethod, Supplier<String> msgSupplier)
记录一个延迟构造的消息,指定源类和方法,没有参数。
|
void |
logp(Level level, String sourceClass, String sourceMethod, Throwable thrown, Supplier<String> msgSupplier)
记录一个懒惰构造的消息,指定源类和方法以及相关联的Throwable信息。
|
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, String sourceClass, String sourceMethod, String bundleName, String msg)
|
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 |
removeHandler(Handler handler)
删除日志处理程序。
|
void |
setFilter(Filter newFilter)
设置一个过滤器来控制此记录器的输出。
|
void |
setLevel(Level newLevel)
设置日志级别,指定该记录器将记录哪些消息级别。
|
void |
setParent(Logger parent)
设置此记录器的父级。
|
void |
setResourceBundle(ResourceBundle bundle)
在此记录器上设置资源包。
|
void |
setUseParentHandlers(boolean useParentHandlers)
指定此记录器是否应将其输出发送到其父记录器。
|
void |
severe(String msg)
记录一个SEVERE消息。
|
void |
severe(Supplier<String> msgSupplier)
记录一个SEVERE消息,只有当记录级别实际上记录该消息时,才会构建一个SEVERE消息。
|
void |
throwing(String sourceClass, String sourceMethod, Throwable thrown)
日志抛出异常。
|
void |
warning(String msg)
记录警告消息。
|
void |
warning(Supplier<String> msgSupplier)
记录一条警告消息,只有当记录级别实际上记录消息时,才能构建一条警告消息。
|
public static final String GLOBAL_LOGGER_NAME
@Deprecated public static final Logger global
Logger.getGlobal()
。
对于旧的JDK版本的兼容性,其中Logger.getGlobal()
不可使用电话Logger.getLogger(Logger.GLOBAL_LOGGER_NAME)
或Logger.getLogger("global")
。
protected Logger(String name, String resourceBundleName)
记录器最初将配置为空级别,并将useParentHandlers设置为true。
name
- 记录器的名称。
这应该是一个点分隔的名称,通常应该基于子系统的包名或类名,如java.net或javax.swing。
匿名记录器可能为空。
resourceBundleName
- 用于本地化此记录器消息的ResourceBundle的名称。
如果没有任何消息需要本地化,则可以为null。
MissingResourceException
- 如果resourceBundleName不为空,并且不能找到相应的资源。
public static final Logger getGlobal()
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
- 如果名称为空。
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
- 如果记录器已存在并使用不同的资源包名称;
或者如果resourceBundleName
是null
但命名的记录器具有一个资源束集。
NullPointerException
- 如果名称为空。
public static Logger getAnonymousLogger()
这种工厂方法主要用于从小程序中使用。 因为生成的Logger是匿名的,所以它可以被创建类保留为私有。 这消除了对正常安全检查的需要,这进而允许不可信的小程序代码更新记录器的控制状态。 例如,applet可以在匿名记录器上执行setLevel或addHandler。
即使新的记录器是匿名的,它被配置为使用根记录器(“”)作为其父记录器。 这意味着默认情况下,它会从根记录器继承其有效的级别和处理程序。 通过setParent
方法更改其父代仍将需要该方法指定的安全权限。
public static Logger getAnonymousLogger(String resourceBundleName)
这种工厂方法主要用于从小程序中使用。 因为生成的Logger是匿名的,所以它可以被创建类保留为私有。 这消除了对正常安全检查的需要,这进而允许不可信的小程序代码更新记录器的控制状态。 例如,applet可以在匿名记录器上执行setLevel或addHandler。
即使新的记录器是匿名的,它被配置为使用根记录器(“”)作为其父记录器。 这意味着默认情况下,它会从根记录器继承其有效的级别和处理程序。 通过setParent
方法更改其父代仍将需要该方法指定的安全权限。
resourceBundleName
- 用于本地化此记录器的消息的ResourceBundle的名称。
如果没有任何消息需要本地化,则可以为null。
MissingResourceException
- 如果resourceBundleName为非空,并且不能找到相应的资源。
public ResourceBundle getResourceBundle()
ResourceBundle
,它由setResourceBundle
方法设置,或mapped from the the resource bundle name设置,通过当前默认语言环境的getLogger
工厂方法设置。
null
,则Logger将使用从其父级继承的资源包或资源包名称。
null
)
public String getResourceBundleName()
getLogger
工厂方法,或base name的ResourceBundle的设定通过setResourceBundle
方法。
null
,则记录器将使用从其父级继承的资源束或资源束名称。
null
)
public void setFilter(Filter newFilter) throws SecurityException
通过初始“级别”检查后,记录器将调用此过滤器来检查是否应该发布日志记录。
newFilter
- 过滤器对象(可以为空)
SecurityException
- 如果存在安全管理员,则该记录器不是匿名的,并且调用者没有LoggingPermission(“control”)。
public Filter getFilter()
public void log(LogRecord record)
该类中的所有其他日志记录方法通过此方法调用以实际执行任何日志记录。 子类可以覆盖此单一方法来捕获所有日志活动。
record
- 要发布的LogRecord
public void log(Level level, String msg)
如果当前对于给定的消息级别启用了记录器,则给定的消息将转发给所有注册的输出处理程序对象。
level
- 消息级标识符之一,例如SEVERE
msg
- 字符串消息(或消息目录中的键)
public void log(Level level, Supplier<String> msgSupplier)
如果当前对于给定消息级别启用了记录器,则通过调用提供的供应商功能并将其转发到所有注册的输出处理程序对象来构建消息。
level
- 其中一个消息级标识符,例如SEVERE
msgSupplier
- 一个函数,在被调用时产生所需的日志消息
public void log(Level level, String msg, Object param1)
如果当前为给定消息级别启用了记录器,则会创建一个相应的LogRecord并转发给所有注册的输出处理程序对象。
level
- 消息级标识符之一,例如SEVERE
msg
- 字符串消息(或消息目录中的键)
param1
- 消息的参数
public void log(Level level, String msg, Object[] params)
如果当前为给定消息级别启用了记录器,则会创建一个相应的LogRecord并转发给所有注册的输出处理程序对象。
level
- 其中一个消息级标识符,例如SEVERE
msg
- 字符串消息(或消息目录中的键)
params
- 消息的参数数组
public void log(Level level, String msg, Throwable thrown)
如果当前为给定消息级别启用了记录器,则给定的参数将存储在LogRecord中,该LogRecord将转发给所有注册的输出处理程序。
请注意,抛出的参数存储在LogRecord throwwn属性中,而不是LogRecord参数属性。 因此,它由输出格式化程序特别处理,不被视为LogRecord消息属性的格式参数。
level
- 消息级标识符之一,例如SEVERE
msg
- 字符串消息(或消息目录中的键)
thrown
- 与日志消息相关联的Throwable。
public void log(Level level, Throwable thrown, Supplier<String> msgSupplier)
如果当前对于给定消息级别启用了记录器,则通过调用提供的供应商功能来构建消息。 然后将消息和给定的Throwable
存储在LogRecord
中,转发给所有注册的输出处理程序。
请注意,抛出的参数存储在LogRecord throwwn属性中,而不是LogRecord参数属性。 因此,它由输出格式化程序特别处理,不被视为LogRecord消息属性的格式参数。
level
- 消息级标识符之一,例如SEVERE
thrown
- 与日志消息相关联的Throwable。
msgSupplier
- 调用时产生所需日志消息的函数
public void logp(Level level, String sourceClass, String sourceMethod, String msg)
如果当前对于给定的消息级别启用了记录器,则给定的消息将转发给所有注册的输出处理程序对象。
level
- 消息级标识符之一,例如SEVERE
sourceClass
- 发出日志记录请求的类的名称
sourceMethod
- 发出日志记录请求的方法的名称
msg
- 字符串消息(或消息目录中的键)
public void logp(Level level, String sourceClass, String sourceMethod, Supplier<String> msgSupplier)
如果当前对于给定消息级别启用了记录器,则通过调用提供的供应商功能并将其转发到所有注册的输出处理程序对象来构建消息。
level
- 消息级标识符之一,例如SEVERE
sourceClass
- 发出日志记录请求的类的名称
sourceMethod
- 发出日志记录请求的方法的名称
msgSupplier
- 当被调用时产生所需的日志消息的函数
public void logp(Level level, String sourceClass, String sourceMethod, String msg, Object param1)
如果当前为给定消息级别启用了记录器,则会创建一个相应的LogRecord并转发给所有注册的输出处理程序对象。
level
- 其中一个消息级别标识符,例如SEVERE
sourceClass
- 发出日志记录请求的类的名称
sourceMethod
- 发出日志记录请求的方法的名称
msg
- 字符串消息(或消息目录中的键)
param1
- 日志消息的参数。
public void logp(Level level, String sourceClass, String sourceMethod, String msg, Object[] params)
如果当前为给定消息级别启用了记录器,则会创建一个相应的LogRecord并转发给所有注册的输出处理程序对象。
level
- 消息级标识符之一,例如SEVERE
sourceClass
- 发出日志记录请求的类的名称
sourceMethod
- 发出日志记录请求的方法的名称
msg
- 字符串消息(或消息目录中的键)
params
- 消息的参数数组
public void logp(Level level, String sourceClass, String sourceMethod, String msg, Throwable thrown)
如果当前为给定消息级别启用了记录器,则给定的参数将存储在LogRecord中,该LogRecord将转发给所有注册的输出处理程序。
请注意,抛出的参数存储在LogRecord throwwn属性中,而不是LogRecord参数属性。 因此,它由输出格式化程序特别处理,不被视为LogRecord消息属性的格式参数。
level
- 消息级标识符之一,例如SEVERE
sourceClass
- 发出日志记录请求的类的名称
sourceMethod
- 发出日志记录请求的方法的名称
msg
- 字符串消息(或消息目录中的键)
thrown
- 与日志消息相关联的Throwable。
public void logp(Level level, String sourceClass, String sourceMethod, Throwable thrown, Supplier<String> msgSupplier)
如果当前对于给定消息级别启用了记录器,则通过调用提供的供应商功能来构建消息。 然后将消息和给定的Throwable
存储在LogRecord
中 ,该文件转发给所有注册的输出处理程序。
请注意,抛出的参数存储在LogRecord throwwn属性中,而不是LogRecord参数属性。 因此,它由输出格式化程序特别处理,不被视为LogRecord消息属性的格式参数。
level
- 消息级标识符之一,例如SEVERE
sourceClass
- 发出日志记录请求的类的名称
sourceMethod
- 发出日志记录请求的方法的名称
thrown
- 与日志消息相关联的Throwable。
msgSupplier
- 一个函数,当被调用时,产生所需的日志消息
@Deprecated public void logrb(Level level, String sourceClass, String sourceMethod, String bundleName, String msg)
如果当前对于给定的消息级别启用了记录器,则给定的消息将转发给所有注册的输出处理程序对象。
msg字符串使用命名的资源包进行本地化。 如果资源包名称为空,或空字符串或无效,则msg字符串未本地化。
level
- 消息级标识符之一,例如SEVERE
sourceClass
- 发出日志记录请求的类的名称
sourceMethod
- 发出日志记录请求的方法的名称
bundleName
- 本地化msg的资源束的名称可以为null
msg
- 字符串消息(或消息目录中的键)
@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
- 日志消息的参数。
@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
- 消息的参数数组
public void logrb(Level level, String sourceClass, String sourceMethod, ResourceBundle bundle, String msg, Object... params)
如果当前为给定消息级别启用了记录器,则会创建一个相应的LogRecord并转发给所有注册的输出处理程序对象。
msg
字符串使用给定的资源包进行本地化。 如果资源束是null
,则msg
字符串未被本地化。
level
- 消息级标识符之一,例如SEVERE
sourceClass
- 发出日志记录请求的类的名称
sourceMethod
- 发出日志记录请求的方法的名称
bundle
- 资源束本地化
msg
,可以是
null
。
msg
- 字符串消息(或消息目录中的键)
params
- 消息的参数(可选,可能不是)。
@Deprecated public void logrb(Level level, String sourceClass, String sourceMethod, String bundleName, String msg, Throwable thrown)
如果当前为给定消息级别启用了记录器,则给定的参数将存储在LogRecord中,该LogRecord将转发给所有注册的输出处理程序。
msg字符串使用命名的资源包进行本地化。 如果资源包名称为空,或空字符串或无效,则msg字符串未本地化。
请注意,抛出的参数存储在LogRecord throwwn属性中,而不是LogRecord参数属性。 因此,它由输出格式化程序特别处理,不被视为LogRecord消息属性的格式参数。
level
- 消息级标识符之一,例如SEVERE
sourceClass
- 发出日志记录请求的类的名称
sourceMethod
- 发出日志记录请求的方法的名称
bundleName
- 本地化msg的资源束的名称可以为null
msg
- 字符串消息(或消息目录中的键)
thrown
- 与日志消息相关联的Throwable。
public void logrb(Level level, String sourceClass, String sourceMethod, ResourceBundle bundle, String msg, Throwable thrown)
如果当前为给定消息级别启用了记录器,则给定的参数将存储在LogRecord中,该LogRecord将转发给所有注册的输出处理程序。
msg
字符串使用给定的资源包进行本地化。 如果资源束是null
,则msg
字符串未被本地化。
请注意,抛出的参数存储在LogRecord throwwn属性中,而不是LogRecord参数属性。 因此,它由输出格式化程序特别处理,不被视为LogRecord消息属性的格式参数。
level
- 消息级标识符之一,例如SEVERE
sourceClass
- 发出日志记录请求的类的名称
sourceMethod
- 发出日志记录请求的方法的名称
bundle
- 资源捆绑到本地化
msg
,可以是
null
msg
- 字符串消息(或消息目录中的键)
thrown
- 与日志消息相关联的Throwable。
public void entering(String sourceClass, String sourceMethod)
这是一种方便的方法,可用于将条目记录到方法中。 具有消息“ENTRY”的LogRecord,日志级别FINER,并且记录给定的sourceMethod和sourceClass。
sourceClass
- 发出日志记录请求的类的名称
sourceMethod
- 正在输入的方法的名称
public void entering(String sourceClass, String sourceMethod, Object param1)
这是一种方便的方法,可用于将条目记录到方法中。 具有消息“ENTRY {0}”的LogRecord,日志级别FINER,并且记录给定的sourceMethod,sourceClass和参数。
sourceClass
- 发出日志记录请求的类的名称
sourceMethod
- 正在输入的方法的名称
param1
- 要输入的方法的参数
public void entering(String sourceClass, String sourceMethod, Object[] params)
这是一种方便的方法,可用于将条目记录到方法中。 具有消息“ENTRY”(后跟参数数组中每个条目的格式{N}指示符)的LogRecord,记录级别FINER,并记录给定的sourceMethod,sourceClass和参数。
sourceClass
- 发出日志记录请求的类的名称
sourceMethod
- 正在输入的方法的名称
params
- 要输入的方法的参数数组
public void exiting(String sourceClass, String sourceMethod)
这是一种方便的方法,可用于记录从方法返回的日志。 具有消息“RETURN”的LogRecord,日志级别FINER以及给定的sourceMethod和sourceClass被记录。
sourceClass
- 发出日志记录请求的类的名称
sourceMethod
- 方法的名称
public void exiting(String sourceClass, String sourceMethod, Object result)
这是一种方便的方法,可用于记录从方法返回的日志。 具有消息“RETURN {0}”的LogRecord,日志级别FINER,并记录给出sourceMethod,sourceClass和result对象。
sourceClass
- 发出日志记录请求的类的名称
sourceMethod
- 方法的名称
result
- 正在返回的对象
public void throwing(String sourceClass, String sourceMethod, Throwable thrown)
这是一种方便的方法来记录一个方法正在通过抛出异常来终止。 使用FINER级别进行日志记录。
如果当前为给定消息级别启用了记录器,则给定的参数将存储在LogRecord中,该LogRecord将转发给所有注册的输出处理程序。 LogRecord的消息设置为“THROW”。
请注意,抛出的参数存储在LogRecord throwwn属性中,而不是LogRecord参数属性。 因此,它由输出格式化程序特别处理,不被视为LogRecord消息属性的格式参数。
sourceClass
- 发出日志记录请求的类的名称
sourceMethod
- 方法的名称。
thrown
- 正在抛出的Throwable。
public void severe(String msg)
如果当前为SEVERE消息级别启用了记录器,则给定的消息将转发给所有注册的输出处理程序对象。
msg
- 字符串消息(或消息目录中的键)
public void warning(String msg)
如果当前为“警告”消息级别启用了记录器,则给定的消息将转发给所有注册的输出处理程序对象。
msg
- 字符串消息(或消息目录中的键)
public void info(String msg)
如果当前为INFO消息级别启用了记录器,则给定的消息将转发给所有注册的输出处理程序对象。
msg
- 字符串消息(或消息目录中的键)
public void config(String msg)
如果当前为CONFIG消息级别启用了记录器,则给定的消息将转发给所有注册的输出处理程序对象。
msg
- 字符串消息(或消息目录中的键)
public void fine(String msg)
如果当前为FINE消息级别启用了记录器,则给定的消息将转发给所有注册的输出处理程序对象。
msg
- 字符串消息(或消息目录中的键)
public void finer(String msg)
如果当前为FINER消息级别启用了记录器,则给定的消息将转发给所有注册的输出处理程序对象。
msg
- 字符串消息(或消息目录中的键)
public void finest(String msg)
如果当前为FINEST消息级别启用了记录器,则给定的消息将转发给所有注册的输出处理程序对象。
msg
- 字符串消息(或消息目录中的键)
public void severe(Supplier<String> msgSupplier)
如果当前为SEVERE消息级别启用了记录器,则通过调用提供的供应商功能并转发给所有注册的输出处理程序对象来构建消息。
msgSupplier
- 一个函数,当被调用时,产生所需的日志消息
public void warning(Supplier<String> msgSupplier)
如果当前为“警告”消息级别启用了记录器,则通过调用提供的供应商功能并转发到所有注册的输出处理程序对象来构建消息。
msgSupplier
- 一个函数,当被调用时,产生所需的日志消息
public void info(Supplier<String> msgSupplier)
如果当前为INFO消息级别启用了记录器,则通过调用提供的供应商功能并将其转发到所有注册的输出处理程序对象来构建消息。
msgSupplier
- 一个函数,当被调用时,产生所需的日志消息
public void config(Supplier<String> msgSupplier)
如果目前为CONFIG消息级别启用了记录器,则通过调用提供的供应商功能并转发给所有注册的输出处理程序对象来构建消息。
msgSupplier
- 一个函数,当被调用时,产生所需的日志消息
public void fine(Supplier<String> msgSupplier)
如果当前为FINE消息级别启用记录器,则通过调用提供的供应商功能并转发到所有注册的输出处理程序对象来构建消息。
msgSupplier
- 一个函数,当被调用时,产生所需的日志消息
public void finer(Supplier<String> msgSupplier)
如果当前为FINER消息级别启用了记录器,则通过调用提供的供应商功能并将其转发到所有注册的输出处理程序对象来构建消息。
msgSupplier
- 一个函数,当被调用时,产生所需的日志消息
public void finest(Supplier<String> msgSupplier)
如果当前为FINEST消息级别启用了记录器,则通过调用提供的供应商功能并转发给所有注册的输出处理程序对象来构建消息。
msgSupplier
- 一个函数,当被调用时,产生所需的日志消息
public void setLevel(Level newLevel) throws SecurityException
如果新级别为空,则表示该节点应从具有(非空)级别值的最近祖先继承其级别。
newLevel
- 日志级别的新值(可能为空)
SecurityException
- 如果存在安全管理员,则该记录器不是匿名的,并且调用者没有LoggingPermission(“control”)。
public Level getLevel()
public boolean isLoggable(Level level)
level
- 消息记录级别
public String getName()
public void addHandler(Handler handler) throws SecurityException
默认情况下,记录器还将其输出发送到其父记录器。 通常,根记录器配置有一组基本上充当所有记录器的默认处理程序的处理程序。
handler
- 记录处理程序
SecurityException
- 如果存在安全管理员,则该记录器不是匿名的,并且调用者没有LoggingPermission(“control”)。
public void removeHandler(Handler handler) throws SecurityException
如果找不到给定的处理程序,则返回静默方式,否则返回null
handler
- 记录处理程序
SecurityException
- 如果存在安全管理员,则该记录器不是匿名的,并且调用者没有LoggingPermission(“control”)。
public Handler[] getHandlers()
public void setUseParentHandlers(boolean useParentHandlers)
useParentHandlers
- 如果输出要发送到记录器的父级,则为真。
SecurityException
- 如果安全管理器存在,则该记录器不是匿名的,并且调用者没有LoggingPermission(“control”)。
public boolean getUseParentHandlers()
public void setResourceBundle(ResourceBundle bundle)
bundle
- 该记录器将使用的资源束。
NullPointerException
- 如果给定的包是
null
。
IllegalArgumentException
- 如果给定的捆绑包没有
base name ,或者如果此记录器已经有一个资源束集,但给定的捆绑包具有不同的基本名称。
SecurityException
- 如果存在安全管理员,此记录器不是匿名的,并且调用者没有LoggingPermission(“control”)。
public Logger getParent()
此方法返回命名空间中最近的父实体。 因此,如果Logger被称为“abcd”,并且已经创建了一个名为“ab”的记录器,但没有记录器“abc”,则记录器“abcd”上的调用getParent将返回记录器“ab”。
如果在命名空间中的根记录器上调用,结果将为null。
public void setParent(Logger parent)
不应该从应用程序代码中调用。
parent
- 新的父记录器
SecurityException
- if a security manager exists and if the caller does not have LoggingPermission("control").