|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.util.logging
类 MemoryHandler
java.lang.Object java.util.logging.Handler java.util.logging.MemoryHandler
-
public class MemoryHandler
- extends Handler
Handler 在内存中的循环缓冲区中对请求进行缓冲处理。
通常,此 Handler 只将传入的 LogRecords 存储到内存缓冲区,并丢弃原来的记录。此缓冲非常经济,并且避免了格式化开销。在一定的触发条件下,MemoryHandler 将其当前的缓冲区内容 push 到目标 Handler 中,此 Handler 通常将内容发布到外界。
有三种主要模型用于触发缓冲区的 push 操作:
- 传入的 LogRecord 类型大于预先定义的 pushLevel 级别。
- 外部类显式地调用 push 方法。
- 如果记录符合所需的某些标准,则子类重写 log 方法,并扫描每个传入的 LogRecord,调用 push。
配置:默认情况下,使用以下 LogManager 配置属性初始化每个 MemoryHandler。如果没有定义该属性(或者有无效的值),则使用指定的默认值。如果没有定义默认值,则抛出 RuntimeException。
- java.util.logging.MemoryHandler.level 指定 Handler 的级别(默认为 Level.ALL)。
- java.util.logging.MemoryHandler.filter 指定要使用的 Filter 类的名称(默认为无 Filter)。
- java.util.logging.MemoryHandler.size 定义缓冲区的大小(默认为 1000)。
- java.util.logging.MemoryHandler.push 定义 pushLevel(默认为 level.SEVERE)。
- java.util.logging.MemoryHandler.target 指定目标 Handler 类的名称(无默认值)。
- 从以下版本开始:
- 1.4
构造方法摘要 | |
---|---|
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 |
构造方法详细信息 |
---|
MemoryHandler
public MemoryHandler()
- 根据 LogManager 配置属性创建一个 MemoryHandler,并对其进行配置。
MemoryHandler
public MemoryHandler(Handler target, int size, Level pushLevel)
-
创建一个 MemoryHandler。
除了使用给定的 pushLevel 参数和缓冲区大小参数之外,其他都按 LogManager 的属性(或默认值)进行配置 MemoryHandler。
- 参数:
-
target
- 将输出发布到的 Handler。 -
size
- 缓冲区的日志记录数(必须大于 0) -
pushLevel
- 要 push 的消息级别。 - 抛出:
-
IllegalArgumentException
- 如果 size <=0。
方法详细信息 |
---|
publish
public void publish(LogRecord record)
-
将 LogRecord 存储在内部缓冲区。
如果有 Filter,则调用其 isLoggable 方法以检查给定的日志记录是否为 loggable。如果不是,则返回它。否则,将给定的记录复制到内部循环缓冲区。然后将该记录的级别属性与 pushLevel 进行比较。如果给定的级别大于或等于 pushLevel,则调用 push 将所有已缓冲的记录写入到目标输出 Handler 中。
-
- 参数:
-
record
- 日志事件的描述。忽略 null 记录,并且也不发布它。
push
public void push()
-
将所有已缓冲的输出 push 到目标 Handler 中。
然后清空缓冲区。
-
flush
public void flush()
close
public void close() throws SecurityException
- 关闭 Handler,并释放所有相关的资源。这也将关闭目标 Handler。
-
- 抛出:
-
SecurityException
- 如果存在安全管理器并且调用方不具有 LoggingPermission("control")。
setPushLevel
public void setPushLevel(Level newLevel) throws SecurityException
- 设置 pushLevel。将 LogRecord 复制到内部缓冲区后,如果它的级别大于或等于 pushLevel,则调用 push。
-
- 参数:
-
newLevel
- pushLevel 的新值。 - 抛出:
-
SecurityException
- 如果存在安全管理器并且调用方不具有 LoggingPermission("control")。
getPushLevel
public Level getPushLevel()
- 获得 pushLevel。
-
- 返回:
- pushLevel 的值。