模块  java.logging
软件包  java.util.logging

Class StreamHandler

  • 已知直接子类:
    ConsoleHandlerFileHandlerSocketHandler

    public class StreamHandler
    extends Handler
    基于流的记录Handler

    这主要用作实现其他日志记录Handlers的基类或支持类。

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

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

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

    例如, 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)
        使用给定的 Formatter和输出流创建 StreamHandler
        参数
        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:
        publish在类 Handler
        参数
        record - 日志事件的描述。 静默忽略空记录,不会发布
      • isLoggable

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

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

        重写:
        isLoggable在类 Handler
        参数
        record - a LogRecord
        结果
        如果将记录 LogRecord true。
      • flush

        public void flush()
        刷新所有缓冲的消息。
        Specified by:
        flush在类 Handler
      • close

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

        Formatter的“tail”字符串在关闭之前写入流中。 此外,如果Formatter的“head”字符串尚未写入流,则它将在“tail”字符串之前写入。

        Specified by:
        close在类 Handler
        异常
        SecurityException - 如果存在安全管理器且调用者没有LoggingPermission(“control”)。