java.lang.Object java.util.logging.Handler java.util.logging.MemoryHandler
public class MemoryHandler
Handler 在内存中的循环缓冲区中对请求进行缓冲处理。
通常,此 Handler 只将传入的 LogRecords 存储到内存缓冲区,并丢弃原来的记录。此缓冲非常经济,并且避免了格式化开销。在一定的触发条件下,MemoryHandler 将其当前的缓冲区内容 push 到目标 Handler 中,此 Handler 通常将内容发布到外界。
有三种主要模型用于触发缓冲区的 push 操作:
配置:默认情况下,使用以下 LogManager 配置属性初始化每个 MemoryHandler。如果没有定义该属性(或者有无效的值),则使用指定的默认值。如果没有定义默认值,则抛出 RuntimeException。
构造方法摘要 | |
---|---|
MemoryHandler() 根据 LogManager 配置属性创建一个 MemoryHandler,并对其进行配置。 |
|
MemoryHandler(Handler target, int size, Level pushLevel) 创建一个 MemoryHandler。 |
方法摘要 | |
---|---|
void |
close() 关闭 Handler,并释放所有相关的资源。 |
void |
flush() 导致目标 Handler 上的刷新。 |
Level |
getPushLevel() 获得 pushLevel。 |
boolean |
isLoggable(LogRecord record) 检查此 Handler 是否实际将给定的 LogRecord 记录到其内部缓冲区。 |
void |
publish(LogRecord record) 将 LogRecord 存储在内部缓冲区。 |
void |
push() 将所有已缓冲的输出 push 到目标 Handler 中。 |
void |
setPushLevel(Level newLevel) 设置 pushLevel。 |
从类 java.util.logging.Handler 继承的方法 |
---|
getEncoding, getErrorManager, getFilter, getFormatter, getLevel, reportError, setEncoding, setErrorManager, setFilter, setFormatter, setLevel |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public MemoryHandler()
public MemoryHandler(Handler target, int size, Level pushLevel)
除了使用给定的 pushLevel 参数和缓冲区大小参数之外,其他都按 LogManager 的属性(或默认值)进行配置 MemoryHandler。
target
- 将输出发布到的 Handler。
size
- 缓冲区的日志记录数(必须大于 0)
pushLevel
- 要 push 的消息级别。
IllegalArgumentException
- 如果 size <=0。
方法详细信息 |
---|
public void publish(LogRecord record)
如果有 Filter,则调用其 isLoggable 方法以检查给定的日志记录是否为 loggable。如果不是,则返回它。否则,将给定的记录复制到内部循环缓冲区。然后将该记录的级别属性与 pushLevel 进行比较。如果给定的级别大于等于 pushLevel,则调用 push 将所有已缓冲的记录写入到目标输出 Handler 中。
record
- 日志事件的描述。忽略 null 记录,并且也不发布它。
public void push()
然后清空缓冲区。
public void flush()
public void close() throws SecurityException
SecurityException
- 如果存在安全管理器并且调用者不具有
LoggingPermission("control")。
public void setPushLevel(Level newLevel) throws SecurityException
newLevel
-
pushLevel 的新值。
SecurityException
- 如果存在安全管理器并且调用者不具有
LoggingPermission("control")。
public Level getPushLevel()
public boolean isLoggable(LogRecord record)
此方法检查 LogRecord 是否有合适的级别,以及是否满足任何的 Filter。但是并不检查 LogRecord 是否导致 "push" 缓冲区的内容。如果 LogRecord 为 Null,则该方法返回 false。
Handler
中的
isLoggable
record
- 一个
LogRecord。