- java.lang.Object
-
- java.util.logging.Handler
-
- java.util.logging.MemoryHandler
-
public class MemoryHandler extends Handler
Handler缓冲区内存中循环缓冲区中的请求。通常这个
Handler简单地将进入的LogRecords存入其内存缓冲区并丢弃早期的记录。 这种缓冲非常便宜,避免了格式化成本。 在某些触发条件下,MemoryHandler将其当前的缓冲区内容推送到目标Handler,通常将其发布到外部世界。触发缓冲区的主要模式有三种:
- 传入的
LogRecord的类型大于预定义级别,即pushLevel。 - 一个外部类显式地调用
push方法。 - 子类覆盖
log方法并扫描每个传入的LogRecord,如果记录符合某些所需条件,则调用push。
配置:默认情况下,每个
MemoryHandler都使用以下LogManager配置属性进行初始化,其中<handler-name>引用处理程序的完全限定类名。 如果未定义属性(或具有无效值),则使用指定的默认值。 如果未定义默认值,则抛出RuntimeException。- <处理程序名> .LEVEL指定了水平
Handler(默认为Level.ALL)。 - <处理程序名> .filter指定的名称
Filter类中使用(默认为无Filter)。 - <handler-name> .size定义缓冲区大小(默认为1000)。
- <handler-name> .push定义了
pushLevel(默认为level.SEVERE)。 - <handler-name> .target指定目标的名称
Handler类。 (无默认)。
例如,
MemoryHandler的属性将是:- java.util.logging.MemoryHandler.level = INFO
- java.util.logging.MemoryHandler.formatter = java.util.logging.SimpleFormatter
对于自定义处理程序,例如com.foo.MyHandler,属性将是:
- com.foo.MyHandler.level = INFO
- com.foo.MyHandler.formatter = java.util.logging.SimpleFormatter
- 从以下版本开始:
- 1.4
- 传入的
-
-
构造方法摘要
构造方法 Constructor 描述 MemoryHandler()创建一个MemoryHandler并配置它基于LogManager配置属性。MemoryHandler(Handler target, int size, Level pushLevel)创建一个MemoryHandler。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 voidclose()关闭Handler并释放所有相关资源。voidflush()导致目标Handler。LevelgetPushLevel()获取pushLevel。booleanisLoggable(LogRecord record)检查这个Handler是否会将给定的LogRecord实际记录到其内部缓冲区中。voidpublish(LogRecord record)将LogRecord存储在内部缓冲区中。voidpush()将任何缓冲输出推送到目标Handler。voidsetPushLevel(Level newLevel)设置pushLevel。-
Methods inherited from class java.util.logging.Handler
getEncoding, getErrorManager, getFilter, getFormatter, getLevel, reportError, setEncoding, setErrorManager, setFilter, setFormatter, setLevel
-
-
-
-
构造方法详细信息
-
MemoryHandler
public MemoryHandler()
创建一个MemoryHandler并配置它基于LogManager配置属性。
-
MemoryHandler
public MemoryHandler(Handler target, int size, Level pushLevel)
创建一个MemoryHandler。MemoryHandler基于LogManager属性(或其默认值)进行配置,但使用给定的pushLevel参数和缓冲区大小参数。- 参数
-
target- 发布输出的处理程序。 -
size- 要缓冲的日志记录数(必须大于零) -
pushLevel- 消息级别推送 - 异常
-
IllegalArgumentException- 如果是size is <= 0
-
-
方法详细信息
-
publish
public void publish(LogRecord record)
将LogRecord存储在内部缓冲区中。如果有一个
Filter,则调用其isLoggable方法来检查给定的日志记录是否可记录。 如果不是我们回来 否则给定的记录被复制到一个内部循环缓冲区。 然后将记录的级别属性与pushLevel进行比较。 如果给定的级别大于或等于pushLevel然后push被称为所有已缓冲的记录写入到目标输出Handler。
-
push
public void push()
将任何缓冲输出推送到目标Handler。然后清除缓冲区。
-
flush
public void flush()
对目标Handler。请注意,
MemoryHandler缓冲区的当前内容未写出。 这需要一个“推”。
-
close
public void close() throws SecurityException关闭Handler并释放所有相关资源。 这也将关闭目标Handler。- Specified by:
-
close在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
-
isLoggable
public boolean isLoggable(LogRecord record)
检查这个Handler是否会将给定的LogRecord实际记录到其内部缓冲区中。该方法检查
LogRecord是否具有适当的级别,以及是否满足任何Filter。 然而,它不检查是否LogRecord将导致的缓冲区的内容“推”。 如果LogRecord为null,它将返回false。- 重写:
-
isLoggable在Handler - 参数
-
record- aLogRecord - 结果
-
如果要记录
LogRecordtrue。
-
-