- java.lang.Object
-
- java.util.logging.Handler
-
- java.util.logging.StreamHandler
-
- java.util.logging.FileHandler
-
public class FileHandlerextends StreamHandler
简单文件记录Handler
。FileHandler
可以写入指定的文件,也可以写入一组旋转的文件。对于一组旋转文件,当每个文件达到给定的大小限制时,它将被关闭,旋转并打开一个新文件。 通过在基本文件名中添加“0”,“1”,“2”等来命名较旧的文件。
默认情况下,IO库中启用了缓冲,但每个日志记录在完成时都会刷新。
默认情况下,
XMLFormatter
类用于格式化。配置:默认情况下,使用以下
LogManager
配置属性初始化每个FileHandler
,其中<handler-name>
引用处理程序的完全限定类名。 如果未定义属性(或具有无效值),则使用指定的默认值。- <处理程序名> .LEVEL指定了默认级别
Handler
(默认为Level.ALL
)。 - <handler-name> .filter指定要使用的
Filter
类的名称(默认为noFilter
)。 - <handler-name> .formatter指定要使用的
Formatter
类的名称(默认为java.util.logging.XMLFormatter
) - <handler-name> .encoding要使用的字符集编码的名称(默认为默认平台编码)。
- <handler-name> .limit指定要写入任何一个文件的近似最大量(以字节为单位)。 如果这是零,那么没有限制。 (默认为无限制)。
- <handler-name> .count指定要循环的输出文件数(默认为1)。
- <handler-name> .pattern指定用于生成输出文件名的模式。 请参阅下文了解详情。 (默认为“%h / java%u.log”)。
- <handler-name> .append指定FileHandler是否应附加到任何现有文件(默认为false)。
- <handler-name> .maxLocks指定FileHandler持有的最大并发锁数(默认为100)。
例如,
FileHandler
的属性为:- java.util.logging.FileHandler.level = INFO
- java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
对于自定义处理程序,例如com.foo.MyHandler,属性将是:
- com.foo.MyHandler.level = INFO
- com.foo.MyHandler.formatter = java.util.logging.SimpleFormatter
模式由一个字符串组成,该字符串包含将在运行时替换的以下特殊组件:
- “/”本地路径名分隔符
- “%t”系统临时目录
- “%h”“user.home”系统属性的值
- “%g”用于区分旋转日志的世代号
- “%u”是解决冲突的唯一编号
- “%%”转换为单个百分号“%”
因此,例如,计数为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以避免冲突只能保证在使用本地磁盘文件系统时可靠地工作。
- 从以下版本开始:
- 1.4
- <处理程序名> .LEVEL指定了默认级别
-
-
构造方法摘要
构造方法 构造器 描述 FileHandler()
构造默认值FileHandler
。FileHandler(String pattern)
初始化FileHandler
以写入给定的文件名。FileHandler(String pattern, boolean append)
初始化FileHandler
以写入给定的文件名,并带有可选的附加。FileHandler(String pattern, int limit, int count)
初始化FileHandler
以写入一组文件。FileHandler(String pattern, int limit, int count, boolean append)
初始化FileHandler
以写入具有可选附加的一组文件。FileHandler(String pattern, long limit, int count, boolean append)
初始化FileHandler
以写入具有可选附加的一组文件。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 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
-
-
-
-
构造方法详细信息
-
FileHandler
public FileHandler() throws IOException, SecurityException
构造默认值FileHandler
。 这将完全由LogManager
属性(或其默认值)配置。- 异常
-
IOException
- 如果打开文件时出现IO问题。 -
SecurityException
- 如果存在安全管理器且调用者没有LoggingPermission("control"))
。 -
NullPointerException
- 如果pattern属性为空String。
-
FileHandler
public FileHandler(String pattern) throws IOException, SecurityException
初始化FileHandler
以写入给定的文件名。FileHandler
基于LogManager
属性(或其默认值)进行配置,但给定模式参数用作文件名模式,文件限制设置为无限制,文件计数设置为1。可以写入的数据量没有限制,因此请谨慎使用。
- 参数
-
pattern
- 输出文件的名称 - 异常
-
IOException
- 如果打开文件存在IO问题。 -
SecurityException
- 如果存在安全管理器且调用者没有LoggingPermission("control")
。 -
IllegalArgumentException
- 如果pattern是空字符串
-
FileHandler
public FileHandler(String pattern, boolean append) throws IOException, SecurityException
初始化FileHandler
以写入给定的文件名,并带有可选的附加。FileHandler
基于LogManager
属性(或其默认值)进行配置,但给定模式参数用作文件名模式,文件限制设置为无限制,文件计数设置为1,并设置追加模式给定的append
参数。可以写入的数据量没有限制,因此请谨慎使用。
- 参数
-
pattern
- 输出文件的名称 -
append
- 指定追加模式 - 异常
-
IOException
- 如果打开文件存在IO问题。 -
SecurityException
- 如果存在安全管理器且调用者没有LoggingPermission("control")
。 -
IllegalArgumentException
- 如果pattern是空字符串
-
FileHandler
public FileHandler(String pattern, int limit, int count) throws IOException, SecurityException
初始化FileHandler
以写入一组文件。 当(大约)将给定限制写入一个文件时,将打开另一个文件。 输出将循环显示一组计数文件。FileHandler
基于LogManager
属性(或其默认值)进行配置,但给定模式参数用作文件名模式,文件限制设置为limit参数,文件计数设置为给定计数参数。计数必须至少为1。
- 参数
-
pattern
- 命名输出文件的模式 -
limit
- 要写入任何一个文件的最大字节数 -
count
- 要使用的文件数 - 异常
-
IOException
- 如果打开文件存在IO问题。 -
SecurityException
- 如果存在安全管理器且调用者没有LoggingPermission("control")
。 -
IllegalArgumentException
- 如果是limit < 0
,或者count < 1
。 -
IllegalArgumentException
- 如果pattern是空字符串
-
FileHandler
public FileHandler(String pattern, int limit, int count, boolean append) throws IOException, SecurityException
初始化FileHandler
以写入具有可选追加的一组文件。 当(大约)将给定限制写入一个文件时,将打开另一个文件。 输出将循环显示一组计数文件。FileHandler
基于LogManager
属性(或其默认值)进行配置,但给定模式参数用作文件名模式,文件限制设置为limit参数,文件计数设置为给定计数参数, append模式设置为给定的append
参数。计数必须至少为1。
- 参数
-
pattern
- 命名输出文件的模式 -
limit
- 要写入任何一个文件的最大字节数 -
count
- 要使用的文件数 -
append
- 指定追加模式 - 异常
-
IOException
- 如果打开文件时出现IO问题。 -
SecurityException
- 如果存在安全管理器且调用者没有LoggingPermission("control")
。 -
IllegalArgumentException
- 如果limit < 0
,或count < 1
。 -
IllegalArgumentException
- 如果pattern是空字符串
-
FileHandler
public FileHandler(String pattern, long limit, int count, boolean append) throws IOException
初始化FileHandler
以写入具有可选附加的一组文件。 当(大约)将给定限制写入一个文件时,将打开另一个文件。 输出将循环显示一组计数文件。FileHandler
基于LogManager
属性(或其默认值)进行配置,但给定模式参数用作文件名模式,文件限制设置为limit参数,文件计数设置为给定计数参数, append模式设置为给定的append
参数。计数必须至少为1。
- 参数
-
pattern
- 命名输出文件的模式 -
limit
- 要写入任何一个文件的最大字节数 -
count
- 要使用的文件数 -
append
- 指定追加模式 - 异常
-
IOException
- 如果打开文件存在IO问题。 -
SecurityException
- 如果存在安全管理器且调用者没有LoggingPermission("control")
。 -
IllegalArgumentException
- 如果是limit < 0
,或者是count < 1
。 -
IllegalArgumentException
- 如果pattern是空字符串 - 从以下版本开始:
- 9
-
-
方法详细信息
-
publish
public void publish(LogRecord record)
格式化并发布LogRecord
。- 重写:
-
publish
在类StreamHandler
- 参数
-
record
- 日志事件的描述。 静默忽略空记录,不会发布
-
close
public void close() throws SecurityException
关闭所有文件。- 重写:
-
close
在类StreamHandler
- 异常
-
SecurityException
- 如果存在安全管理器且调用者没有LoggingPermission("control")
。
-
-