public class MemoryHandler
extends Handler
java.lang.Object | ||
↳ | java.util.logging.Handler | |
↳ | java.util.logging.MemoryHandler |
Handler在内存中的循环缓冲区中缓冲请求。
通常这Handler只是简单地将传入的LogRecords存储到其内存缓冲区并丢弃较早的记录。 这种缓冲非常便宜,避免了格式化成本。 在某些触发条件下, MemoryHandler会将其当前缓冲区内容推送到目标Handler ,该目标通常会将其发布到外部世界。
有三种主要的模式来触发缓冲区的推送:
配置:默认情况下,每个MemoryHandler都使用以下LogManager配置属性进行初始化。 如果属性未定义(或者具有无效值),则使用指定的默认值。 如果没有定义默认值,则抛出RuntimeException。
Public constructors |
|
---|---|
MemoryHandler() 创建一个 MemoryHandler并根据 LogManager配置属性 对其进行配置。 |
|
MemoryHandler(Handler target, int size, Level pushLevel) 创建一个 MemoryHandler 。 |
Public methods |
|
---|---|
void |
close() 关闭 Handler并释放所有关联的资源。 |
void |
flush() 导致对目标 Handler进行刷新。 |
Level |
getPushLevel() 获取 pushLevel 。 |
boolean |
isLoggable(LogRecord record) 检查这个 Handler是否会将给定的 LogRecord实际记录到其内部缓冲区中。 |
void |
publish(LogRecord record) 将 LogRecord存储在内部缓冲区中。 |
void |
push() 将任何缓冲输出推送到目标 Handler 。 |
void |
setPushLevel(Level newLevel) 设置 pushLevel 。 |
Inherited methods |
|
---|---|
From class java.util.logging.Handler
|
|
From class java.lang.Object
|
MemoryHandler (Handler target, int size, Level pushLevel)
创建一个 MemoryHandler 。
MemoryHandler基于 LogManager属性(或其默认值)进行配置,但使用了给定的 pushLevel参数和缓冲区大小参数。
Parameters | |
---|---|
target |
Handler : the Handler to which to publish output. |
size |
int : the number of log records to buffer (must be greater than zero) |
pushLevel |
Level : message level to push on |
Throws | |
---|---|
IllegalArgumentException |
if size is <= 0 |
void close ()
关闭Handler并释放所有关联的资源。 这也将关闭目标Handler 。
Throws | |
---|---|
SecurityException |
if a security manager exists and if the caller does not have LoggingPermission("control"). |
Level getPushLevel ()
获得 pushLevel 。
Returns | |
---|---|
Level |
the value of the pushLevel |
boolean isLoggable (LogRecord record)
检查这个 Handler是否实际上将给定的 LogRecord记录到其内部缓冲区中。
该方法检查LogRecord是否具有适当的级别以及它是否满足任何Filter 。 然而,它不检查LogRecord是否会导致缓冲的内容“推”。 如果LogRecord为空,它将返回false。
Parameters | |
---|---|
record |
LogRecord : a LogRecord |
Returns | |
---|---|
boolean |
true if the LogRecord would be logged. |
void publish (LogRecord record)
将 LogRecord存储在内部缓冲区中。
如果有Filter ,将调用其isLoggable方法来检查给定的日志记录是否可记录。 如果不是我们回来。 否则,给定记录被复制到内部循环缓冲区中。 然后将记录的级别属性与pushLevel进行比较。 如果给定的级别大于或等于pushLevel然后push被称为所有已缓冲的记录写入到目标输出Handler。
Parameters | |
---|---|
record |
LogRecord : description of the log event. A null record is silently ignored and is not published |
void setPushLevel (Level newLevel)
设置pushLevel 。 在LogRecord被复制到我们的内部缓冲区之后,如果它的级别大于或等于pushLevel ,那么将调用push 。
Parameters | |
---|---|
newLevel |
Level : the new value of the pushLevel |
Throws | |
---|---|
SecurityException |
if a security manager exists and if the caller does not have LoggingPermission("control"). |