- java.lang.Object
-
- java.util.logging.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());
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
-
-
Field Summary
Fields Modifier and Type Field 描述 static Logger
global
已过时。此字段的初始化容易出现死锁。 该字段必须由Logger类初始化初始化,这可能会导致与LogManager类初始化的死锁。 在这种情况下,两个类初始化等待彼此完成。 获取全局记录器对象的首选方法是通过调用Logger.getGlobal()
。 为了兼容Logger.getGlobal()
不可用的旧JDK版本,请使用电话Logger.getLogger(Logger.GLOBAL_LOGGER_NAME)
或Logger.getLogger("global")
。static String
GLOBAL_LOGGER_NAME
GLOBAL_LOGGER_NAME是全球记录器的名称。
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 弃用的方法 Modifier and Type 方法 描述 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, Throwable thrown, Supplier<String> msgSupplier)
记录一个懒惰构造的消息,并附带相关的Throwable信息。void
log(Level level, Supplier<String> msgSupplier)
记录一条消息,只有在日志记录级别实际上记录该消息时才会被构造。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, Throwable thrown, Supplier<String> msgSupplier)
记录一个懒惰构造的消息,指定源类和方法以及相关联的Throwable信息。void
logp(Level level, String sourceClass, String sourceMethod, Supplier<String> msgSupplier)
记录一个延迟构造的消息,指定源类和方法,没有参数。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
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
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)
记录一条警告消息,只有当记录级别实际上记录消息时,才能构建一条警告消息。
-
-
-
字段详细信息
-
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
- 如果记录器已存在并使用不同的资源包名称; 或者如果resourceBundleName
是null
但命名的记录器具有一个资源束集合。 -
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(“控制”)。
-
-