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

Class StreamHandler

  • 已知直接子类:
    ConsoleHandlerFileHandlerSocketHandler


    public class StreamHandler
    extends Handler
    基于流记录Handler

    这主要是作为基础类或支持类用于实现其他日志记录Handlers

    LogRecords已发布给给定的java.io.OutputStream

    配置:默认情况下,每个StreamHandler都使用以下LogManager配置属性进行初始化,其中<handler-name>引用处理程序的完全限定类名。 如果未定义属性(或具有无效值),则使用指定的默认值。

    • <处理程序名> .LEVEL指定了默认级别Handler (默认为Level.INFO )。
    • <处理程序名> .filter指定的名称Filter类中使用(默认为无Filter )。
    • <处理程序名> .formatter指定的名称Formatter类中使用(默认为java.util.logging.SimpleFormatter )。
    • <handler-name>。编码要使用的字符集编码的名称(默认为默认平台编码)。

    例如, StreamHandler的属性将是:

    • java.util.logging.StreamHandler.level = INFO
    • java.util.logging.StreamHandler.formatter = java.util.logging.SimpleFormatter

    对于自定义处理程序,例如com.foo.MyHandler,属性将是:

    • com.foo.MyHandler.level = INFO
    • com.foo.MyHandler.formatter = java.util.logging.SimpleFormatter
    从以下版本开始:
    1.4
    • 构造方法详细信息

      • StreamHandler

        public StreamHandler​()
        创建一个 StreamHandler ,没有当前的输出流。
      • StreamHandler

        public StreamHandler​(OutputStream out,
                             Formatter formatter)
        创建一个 StreamHandler与给定的 Formatter和输出流。
        参数
        out - 目标输出流
        formatter - 用于格式化输出的格式化器
    • 方法详细信息

      • setOutputStream

        protected void setOutputStream​(OutputStream out)
                                throws SecurityException
        更改输出流。

        如果有当前输出流,则写入Formatter的尾字符串,并且流被刷新并关闭。 然后输出流被替换为新的输出流。

        参数
        out - 新的输出流。 可能不为空
        异常
        SecurityException - 如果存在安全管理员,并且呼叫者没有 LoggingPermission("control")
      • publish

        public void publish​(LogRecord record)
        格式化并发布一个LogRecord

        StreamHandler首先检查是否有OutputStream ,如果给定的LogRecord至少具有所需的日志级别。 如果不是,它会默默地返回。 如果是这样,它会调用任何关联的Filter来检查是否应该发布记录。 如果是这样,它调用其Formatter来格式化记录,然后将结果写入当前输出流。

        如果这是第LogRecord被写入给定OutputStream ,该Formatter了之前的‘头部’字符串写入流LogRecord被写入。

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

        public boolean isLoggable​(LogRecord record)
        检查这个Handler是否会实际记录给定的LogRecord

        该方法检查LogRecord是否具有适当的级别,以及是否满足任何Filter 如果没有分配任何输出流或LogRecord为空,它也将返回false。

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

        public void flush​()
        刷新任何缓冲的消息。
        Specified by:
        flushHandler
      • close

        public void close​()
                   throws SecurityException
        关闭当前的输出流。

        Formatter的“尾”字符串在关闭之前写入流中。 另外,如果Formatter的“头”字符串还没有被写入到流中,它将被写在“尾”字符串之前。

        Specified by:
        closeHandler
        异常
        SecurityException - 如果存在安全管理员,并且主叫方没有LoggingPermission(“控制”)。