public class MemoryHandler extends Handler
通常这个Handler将传入的LogRecords存储到其内存缓冲区中,并丢弃早期的记录。 这种缓冲非常便宜,并避免格式化成本。 在某些触发条件下, MemoryHandler将其当前缓冲区内容推送到目标Handler ,通常将其发布到外部世界。
触发缓冲区的主要模式有三种:
配置:默认情况下,每个MemoryHandler使用以下LogManager 配置属性进行初始化,其中<handler-name>引用处理程序的完全限定类名。 如果未定义属性(或具有无效值),则使用指定的默认值。 如果未定义默认值,则抛出RuntimeException。
例如,MemoryHandler的MemoryHandler
将是:
对于自定义处理程序,例如com.foo.MyHandler,属性将是:
Constructor and Description |
---|
MemoryHandler()
创建一个
MemoryHandler并根据
LogManager配置属性进行配置。
|
MemoryHandler(Handler target, int size, Level pushLevel)
创建一个
MemoryHandler 。
|
Modifier and Type | Method and Description |
---|---|
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 。
|
getEncoding, getErrorManager, getFilter, getFormatter, getLevel, reportError, setEncoding, setErrorManager, setFilter, setFormatter, setLevel
public MemoryHandler()
public MemoryHandler(Handler target, int size, Level pushLevel)
除了使用给定的pushLevel参数和缓冲区大小参数之外, MemoryHandler是基于LogManager属性(或其默认值) 配置的 。
target
- 发布输出的处理程序。
size
- 要缓冲的日志记录数(必须大于0)
pushLevel
- 要推送的消息级别
IllegalArgumentException
- 如果
size is <= 0
public void publish(LogRecord record)
如果有Filter ,则调用其isLoggable方法来检查给定的日志记录是否可记录。 如果不是我们回来 否则给定的记录被复制到一个内部循环缓冲区。 然后将记录的等级属性与pushLevel进行比较。 如果给定的级别大于或等于pushLevel,则调用push将所有缓冲记录写入目标输出Handler 。
public void push()
然后清除缓冲区。
public void flush()
请注意, MemoryHandler缓冲区的当前内容未写出。 这需要一个“推”。
public void close() throws SecurityException
close
在类别
Handler
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是否会导致缓冲区内容的“推送”。 如果LogRecord为空,它将返回false。
isLoggable
在类别
Handler
record
- a
LogRecord