Module  java.logging
软件包  java.util.logging

Class 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
    • 构造方法详细信息

      • 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

        Specified by:
        publishHandler
        参数
        record - 日志事件的描述。 空值记录被默认忽略并且未发布
      • push

        public void push​()
        将任何缓冲输出推送到目标Handler

        然后清除缓冲区。

      • flush

        public void flush​()
        对目标Handler

        请注意, MemoryHandler缓冲区的当前内容写出。 这需要一个“推”。

        Specified by:
        flushHandler
      • close

        public void close​()
                   throws SecurityException
        关闭Handler并释放所有相关资源。 这也将关闭目标Handler
        Specified by:
        closeHandler
        异常
        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。

        重写:
        isLoggableHandler
        参数
        record - a LogRecord
        结果
        如果要记录 LogRecord true。