- java.lang.Object
-
- java.util.logging.Handler
-
- java.util.logging.StreamHandler
-
- 已知直接子类:
-
ConsoleHandler
,FileHandler
,SocketHandler
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
-
-
构造方法摘要
构造方法 Constructor 描述 StreamHandler()
创建一个StreamHandler
,没有当前的输出流。StreamHandler(OutputStream out, Formatter formatter)
创建一个StreamHandler
与给定的Formatter
和输出流。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 void
close()
关闭当前的输出流。void
flush()
刷新任何缓冲的消息。boolean
isLoggable(LogRecord record)
检查这个Handler
是否会实际记录给定的LogRecord
。void
publish(LogRecord record)
格式化并发布一个LogRecord
。void
setEncoding(String encoding)
设置(或更改)此Handler
使用的字符编码。protected void
setOutputStream(OutputStream out)
更改输出流。-
Methods inherited from class java.util.logging.Handler
getEncoding, getErrorManager, getFilter, getFormatter, getLevel, reportError, setErrorManager, setFilter, setFormatter, setLevel
-
-
-
-
构造方法详细信息
-
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")
。
-
setEncoding
public void setEncoding(String encoding) throws SecurityException, UnsupportedEncodingException
设置(或更改)此Handler
使用的字符编码。之前的任何编码应设置
LogRecords
被写入Handler
。- 重写:
-
setEncoding
的Handler
- 参数
-
encoding
- 支持的字符编码的名称。 可以为空,表示默认的平台编码。 - 异常
-
SecurityException
- 如果存在安全管理员,并且呼叫方没有LoggingPermission("control")
。 -
UnsupportedEncodingException
- 如果不支持命名编码。
-
publish
public void publish(LogRecord record)
格式化并发布一个LogRecord
。StreamHandler
首先检查是否有OutputStream
,如果给定的LogRecord
至少具有所需的日志级别。 如果不是,它会默默地返回。 如果是这样,它会调用任何关联的Filter
来检查是否应该发布记录。 如果是这样,它调用其Formatter
来格式化记录,然后将结果写入当前输出流。如果这是第
LogRecord
被写入给定OutputStream
,该Formatter
了之前的‘头部’字符串写入流LogRecord
被写入。
-
isLoggable
public boolean isLoggable(LogRecord record)
检查这个Handler
是否会实际记录给定的LogRecord
。该方法检查
LogRecord
是否具有适当的级别,以及是否满足任何Filter
。 如果没有分配任何输出流或LogRecord为空,它也将返回false。- 重写:
-
isLoggable
在Handler
- 参数
-
record
- aLogRecord
- 结果
-
如果将记录
LogRecord
true。
-
close
public void close() throws SecurityException
关闭当前的输出流。Formatter
的“尾”字符串在关闭之前写入流中。 另外,如果Formatter
的“头”字符串还没有被写入到流中,它将被写在“尾”字符串之前。- Specified by:
-
close
在Handler
- 异常
-
SecurityException
- 如果存在安全管理员,并且主叫方没有LoggingPermission(“控制”)。
-
-