java.lang.Object java.util.logging.Handler java.util.logging.StreamHandler java.util.logging.FileHandler
public class FileHandler
简单的文件日志记录 Handler。
FileHandler 可以写入指定的文件,也可以写入文件轮换集。
对于文件轮换集而言,到达每个文件的给定大小限制后,就关闭该文件,将其轮换出去,并打开新的文件。通过在基本文件名中添加 "0"、"1"、"2" 等来依次命名旧文件。
默认情况下,IO 库中启用了缓冲,但当缓冲完成时,每个日志记录都要被刷新。
默认情况下,XMLFormatter 类用于格式化。
配置: 默认情况下,每个 FileHandler 都是使用以下 LogManager 配置属性执行初始化的。如果没有定义属性(或者属性具有非法值),则使用指定的默认值。
模式由包括以下特殊组件的字符串组成,则运行时要替换这些组件:
例如,文件计数为 2 的 "%t/java%g.log" 模式通常导致在 Solaris 系统中将日志文件写入 /var/tmp/java0.log 和 /var/tmp/java1.log,而在 Windows 95 中,则将其写入 C:\TEMP\java0.log 和 C:\TEMP\java1.log。
按照 0、1、2 等的序列安排生成号。
通常,将唯一字段 "%u" 设置为 0。但是如果 FileHandler 试图打开文件名并查找当前被另一个进程使用的文件,则增加唯一的字段号并再次重试。重复此操作直到 FileHandler 找到当前没有被使用的文件名。如果有冲突并且没有指定 "%u" 字段,则将该字段添加到文件名末尾的小数点后(它将位于所有自动添加的生成号后面)。
因此,如果三个进程都试图将日志记录到 fred%u.%g.txt,那么它们可能将 fred0.0.txt、fred1.0.txt、fred2.0.txt 作为其循环序列中的首个文件而结束。
注意,使用本地磁盘文件系统时,使用唯一的 id 以避免冲突是系统可靠运行的唯一保证。
构造方法摘要 | |
---|---|
FileHandler() 构造一个默认的 FileHandler。 |
|
FileHandler(String pattern) 初始化要写入给定文件名的 FileHandler 。 |
|
FileHandler(String pattern, boolean append) 初始化要写入给定文件名的 FileHandler(使用可选的 append)。 |
|
FileHandler(String pattern, int limit, int count) 初始化要写入文件集的 FileHandler。 |
|
FileHandler(String pattern, int limit, int count, boolean append) 初始化要写入文件集的 FileHandler(使用可选的 append)。 |
方法摘要 | |
---|---|
void |
close() 关闭所有文件。 |
void |
publish(LogRecord record) 格式化并发布 LogRecord。 |
从类 java.util.logging.StreamHandler 继承的方法 |
---|
flush, isLoggable, setEncoding, setOutputStream |
从类 java.util.logging.Handler 继承的方法 |
---|
getEncoding, getErrorManager, getFilter, getFormatter, getLevel, reportError, setErrorManager, setFilter, setFormatter, setLevel |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public FileHandler() throws IOException, SecurityException
IOException
- 如果打开文件时存在 IO 问题。
SecurityException
- 如果安全管理器存在并且调用者不具有
LoggingPermission("control"))。
NullPointerException
- 如果模式属性是一个空的 String。
public FileHandler(String pattern) throws IOException, SecurityException
根据 LogManager 属性(或其默认值)来配置 FileHandler(给定的模式参数用作文件名模式的情况除外),将文件限制设置为无限制,文件计数设置为 1。
由于对写入的数据量没有限制,因此要谨慎使用。
pattern
- 输出文件的名称。
IOException
- 如果打开文件时存在 IO 问题。
SecurityException
- 如果安全管理器存在并且调用者不具有
LoggingPermission("control")。
IllegalArgumentException
- 如果模式是一个空的 string。
public FileHandler(String pattern, boolean append) throws IOException, SecurityException
根据 LogManager 属性(或其默认值)来配置 FileHandler(给定的模式参数用作文件名模式的情况除外),将文件限制设置为无限制,文件计数设置为 1,将 append 模式设置为给定的 append 参数。
由于对写入的数据量没有限制,因此要谨慎使用。
pattern
- 输出文件的名称。
append
- 指定 append 模式。
IOException
- 如果打开文件时存在 IO 问题。
SecurityException
- 如果安全管理器存在并且调用者不具有
LoggingPermission("control")。
IllegalArgumentException
- 如果模式是一个空的 string。
public FileHandler(String pattern, int limit, int count) throws IOException, SecurityException
根据 LogManager 属性(或其默认值)来配置 FileHandler(给定的模式参数用作文件名模式的情况除外),将文件限制设置为限制参数,将文件计数设置为给定的计数参数。
计数必须至少为 1。
pattern
- 为输出文件命名的模式。
limit
- 写入到任何一个文件的最大字节数。
count
- 要使用的文件数。
IOException
- 如果打开文件时存在 IO 问题。
SecurityException
- 如果安全管理器存在并且调用者不具有
LoggingPermission("control")。
IllegalArgumentException
- 如果 limit < 0,或 count < 1。
IllegalArgumentException
- 如果模式是一个空的 string。
public FileHandler(String pattern, int limit, int count, boolean append) throws IOException, SecurityException
根据 LogManager 属性(或其默认值)来配置 FileHandler(给定的模式参数用作文件名模式的情况除外),将文件限制设置为限制参数,将文件计数设置为给定的计数参数,将 append 模式设置为给定的 append 参数。
计数必须至少为 1。
pattern
- 为输出文件命名的模式。
limit
- 写入到任何一个文件的最大字节数。
count
- 要使用的文件数。
append
- 指定 append 模式。
IOException
- 如果打开文件时存在 IO 问题。
SecurityException
- 如果安全管理器存在并且调用者不具有
LoggingPermission("control")。
IllegalArgumentException
- 如果 limit < 0,或 count < 1。
IllegalArgumentException
- 如果模式是一个空的 string。
方法详细信息 |
---|
public void publish(LogRecord record)
StreamHandler
中的
publish
record
- 日志事件的描述。忽略 null 记录,并且也不发布它。
public void close() throws SecurityException
StreamHandler
中的
close
SecurityException
- 如果安全管理器存在并且调用者不具有
LoggingPermission("control")。