java.lang.Object
java.util.logging.Handler
java.util.logging.StreamHandler
- 直接已知的子类:
-
ConsoleHandler
,FileHandler
,SocketHandler
基于流的日志记录
Handler
。
主要用作实现其他日志 Handler
时的基类或支持类。
LogRecords
被发布到给定的 java.io.OutputStream
。
配置: 默认情况下,每个 StreamHandler
都使用以下 LogManager
配置属性进行初始化,其中 <handler-name>
指的是处理程序的完全限定类名。如果未定义属性(或具有无效值),则使用指定的默认值。
- <handler-name>.level 指定
Handler
的默认级别(默认为Level.INFO
)。 - <handler-name>.filter 指定要使用的
Filter
类的名称(默认为无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
- 自 JDK 版本:
- 1.4
-
Constructor Summary
ConstructorDescription创建一个没有当前输出流的StreamHandler
。StreamHandler
(OutputStream out, Formatter formatter) 创建一个具有给定Formatter
和输出流的StreamHandler
。 -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
关闭当前输出流。void
flush()
刷新任何缓冲的消息。boolean
isLoggable
(LogRecord record) 检查此Handler
是否实际记录给定的LogRecord
。void
格式化并发布一个LogRecord
。void
setEncoding
(String encoding) 设置(或更改)此Handler
使用的字符编码。protected void
更改输出流。Methods declared in class java.util.logging.Handler
getEncoding, getErrorManager, getFilter, getFormatter, getLevel, reportError, setErrorManager, setFilter, setFormatter, setLevel
-
Constructor Details
-
StreamHandler
public StreamHandler()创建一个没有当前输出流的StreamHandler
。 -
StreamHandler
创建一个具有给定Formatter
和输出流的StreamHandler
。- 参数:
-
out
- 目标输出流 -
formatter
- 用于格式化输出的格式化程序
-
-
Method Details
-
setOutputStream
更改输出流。如果存在当前输出流,则会写入
Formatter
的尾部字符串,然后刷新和关闭流。然后用新的输出流替换输出流。- 参数:
-
out
- 新的输出流。不得为 null。 - 抛出:
-
SecurityException
- 如果存在安全管理器且调用者没有LoggingPermission("control")
。
-
setEncoding
设置(或更改)此Handler
使用的字符编码。应在写入任何
LogRecords
到Handler
之前设置编码。- 覆盖:
-
setEncoding
在类Handler
中 - 参数:
-
encoding
- 支持的字符编码的名称。可能为 null,表示默认平台编码。 - 抛出:
-
SecurityException
- 如果存在安全管理器且调用者没有LoggingPermission("control")
。 -
UnsupportedEncodingException
- 如果不支持指定的编码。
-
publish
格式化并发布一个LogRecord
。StreamHandler
首先检查是否有OutputStream
,以及给定的LogRecord
是否至少具有所需的日志级别。如果没有,则会静默返回。如果有,则调用任何关联的Filter
来检查是否应发布记录。如果是,则调用其Formatter
来格式化记录,然后将结果写入当前输出流。如果这是要写入给定
OutputStream
的第一个LogRecord
,则会在写入LogRecord
之前将Formatter
的“head”字符串写入流。 -
isLoggable
检查此Handler
是否实际记录给定的LogRecord
。此方法检查
LogRecord
是否具有适当的级别以及是否满足任何Filter
。如果尚未分配输出流或 LogRecord 为 null,则还将返回 false。- 覆盖:
-
isLoggable
在类Handler
中 - 参数:
-
record
- 一个LogRecord
(可能为 null)。 - 返回:
-
如果将记录
LogRecord
,则为 true。
-
flush
public void flush()刷新任何缓冲的消息。 -
close
关闭当前输出流。在关闭流之前,将
Formatter
的“tail”字符串写入流。此外,如果尚未将Formatter
的“head”字符串写入流,则会在“tail”字符串之前写入。- 指定者:
-
close
在类Handler
中 - 抛出:
-
SecurityException
- 如果存在安全管理器且调用者没有 LoggingPermission("control")。
-