- 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
。配置:默认情况下,使用以下
LogManager
配置属性初始化每个StreamHandler
,其中<handler-name>
引用处理程序的完全限定类名。 如果未定义属性(或具有无效值),则使用指定的默认值。- <处理程序名> .LEVEL指定了默认级别
Handler
(默认为Level.INFO
)。 - <handler-name> .filter指定要使用的
Filter
类的名称(默认为noFilter
)。 - <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()
创建一个StreamHandler
,没有当前输出流。StreamHandler(OutputStream out, Formatter formatter)
使用给定的Formatter
和输出流创建StreamHandler
。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 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)
更改输出流。-
声明方法的类 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)
使用给定的Formatter
和输出流创建StreamHandler
。- 参数
-
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
- 支持的字符编码的名称。 可以为null,表示默认的平台编码。 - 异常
-
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为null,它也将返回false。- 重写:
-
isLoggable
在类Handler
- 参数
-
record
- aLogRecord
- 结果
-
如果将记录
LogRecord
true。
-
close
public void close() throws SecurityException
关闭当前输出流。Formatter
的“tail”字符串在关闭之前写入流中。 此外,如果Formatter
的“head”字符串尚未写入流,则它将在“tail”字符串之前写入。- Specified by:
-
close
在类Handler
- 异常
-
SecurityException
- 如果存在安全管理器且调用者没有LoggingPermission(“control”)。
-
-