- java.lang.Object
-
- java.util.logging.Handler
-
- java.util.logging.StreamHandler
-
- java.util.logging.FileHandler
-
public class FileHandler extends StreamHandler
简单的文件记录Handler
。FileHandler
可以写入指定的文件,也可以写入一组旋转的文件。对于一组旋转的文件,当每个文件达到给定的大小限制时,它将被关闭,旋转并打开一个新文件。 以前的文件通过将“0”,“1”,“2”等添加到基本文件名中来命名。
默认情况下,IO库中启用了缓存,但是每个日志记录在完成后才会被刷新。
默认情况下,
XMLFormatter
类用于格式化。配置:默认情况下,每个
FileHandler
都使用以下LogManager
配置属性进行初始化,其中<handler-name>
引用处理程序的完全限定类名。 如果未定义属性(或具有无效值),则使用指定的默认值。- <处理程序名> .LEVEL指定了默认级别
Handler
(默认为Level.ALL
)。 - <处理程序名> .filter指定的名称
Filter
类中使用(默认为无Filter
)。 - <处理程序名> .formatter指定的名称
Formatter
使用(默认为classjava.util.logging.XMLFormatter
) - <handler-name>。编码要使用的字符集编码的名称(默认为默认平台编码)。
- <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作为其旋转序列中的第一个文件。
请注意,使用唯一的ids来避免冲突只能保证在使用本地磁盘文件系统时可靠地工作。
- 从以下版本开始:
- 1.4
- <处理程序名> .LEVEL指定了默认级别
-
-
构造方法摘要
构造方法 Constructor 描述 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
以写入一组可选附加的文件。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 void
close()
关闭所有文件。void
publish(LogRecord record)
格式化并发布LogRecord
。-
Methods inherited from class java.util.logging.Handler
getEncoding, getErrorManager, getFilter, getFormatter, getLevel, reportError, setErrorManager, setFilter, setFormatter, setLevel
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from class java.util.logging.StreamHandler
flush, isLoggable, setEncoding, setOutputStream
-
-
-
-
构造方法详细信息
-
FileHandler
public FileHandler() throws IOException, SecurityException
构造默认值FileHandler
。 这将完全由LogManager
属性(或其默认值)配置。- 异常
-
IOException
- 如果打开文件时有IO问题。 -
SecurityException
- 如果安全管理器存在,并且呼叫者没有LoggingPermission("control"))
。 -
NullPointerException
- 如果pattern属性是一个空字符串。
-
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
- 如果模式是空字符串
-
FileHandler
public FileHandler(String pattern, int limit, int count, boolean append) throws IOException, SecurityException
初始化FileHandler
以写入一组可选的附加文件。 当(大约)给定的限制已写入一个文件时,将打开另一个文件。 输出将循环通过一组计数文件。FileHandler
是基于LogManager
属性(或其默认值)配置的,除了给定的模式参数用作文件名模式,文件限制设置为limit参数,文件数设置为给定的计数参数,追加模式设置为给定的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
参数。计数必须至少为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")
。
-
-