public class FileHandler extends StreamHandler
FileHandler可以写入指定的文件,也可以写入一组旋转的文件。
对于一组旋转的文件,当每个文件达到给定的大小限制时,它将被关闭,旋转并打开一个新文件。 以前的文件通过将“0”,“1”,“2”等添加到基本文件名中来命名。
默认情况下,IO库中启用了缓存,但是每个日志记录在完成后才会被刷新。
默认情况下, XMLFormatter类用于格式化。
配置:默认情况下,每个FileHandler都使用以下LogManager 配置属性进行初始化,其中<handler-name>是指处理程序的完全限定类名。 如果未定义属性(或具有无效值),则使用指定的默认值。
例如,FileHandler的FileHandler
将是:
对于自定义处理程序,例如com.foo.MyHandler,属性将是:
模式由包含以下特殊组件的字符串组成,这些组件将在运行时被替换:
因此,例如,计数为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来避免冲突只能保证在使用本地磁盘文件系统时可靠地工作。
Constructor and Description |
---|
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以写入一组可选附加的文件。
|
Modifier and Type | Method and Description |
---|---|
void |
close()
关闭所有文件。
|
void |
publish(LogRecord record)
格式化并发布
LogRecord 。
|
flush, isLoggable, setEncoding, setOutputStream
getEncoding, getErrorManager, getFilter, getFormatter, getLevel, reportError, setErrorManager, setFilter, setFormatter, setLevel
public FileHandler() throws IOException, SecurityException
IOException
- 如果打开文件时有IO问题。
SecurityException
- 如果存在安全管理员,并且呼叫者没有
LoggingPermission("control")) 。
NullPointerException
- 如果pattern属性为空字符串。
public FileHandler(String pattern) throws IOException, SecurityException
FileHandler是基于LogManager属性(或其默认值)配置的,除了使用给定的模式参数作为文件名模式,文件限制设置为无限制,文件数设置为1。
可能写入的数据量没有限制,因此请谨慎使用。
pattern
- 输出文件的名称
IOException
- 如果存在打开文件的IO问题。
SecurityException
- 如果安全管理器存在,并且呼叫者没有
LoggingPermission("control") 。
IllegalArgumentException
- 如果pattern是一个空字符串
public FileHandler(String pattern, boolean append) throws IOException, SecurityException
FileHandler是基于LogManager属性(或其默认值)配置的,除了使用给定的模式参数作为文件名模式,文件限制设置为无限制,文件数设置为1,并且追加模式设置给定append的参数。
可能写入的数据量没有限制,因此请谨慎使用。
pattern
- 输出文件的名称
append
- 指定追加模式
IOException
- 如果打开文件时有IO问题。
SecurityException
- 如果安全管理器存在,并且呼叫者没有
LoggingPermission("control") 。
IllegalArgumentException
- 如果pattern是一个空字符串
public FileHandler(String pattern, int limit, int count) throws IOException, SecurityException
FileHandler是基于LogManager属性(或其默认值)配置的,除了给定的模式参数用作文件名模式,文件限制设置为limit参数,文件计数设置为给定的计数参数。
计数必须至少为1。
pattern
- 命名输出文件的模式
limit
- 要写入任何一个文件的最大字节数
count
- 要使用的文件数
IOException
- 如果打开文件时有IO问题。
SecurityException
- 如果存在安全管理员,并且呼叫方没有
LoggingPermission("control") 。
IllegalArgumentException
- 如果是
limit < 0
或
count < 1
。
IllegalArgumentException
- 如果pattern是一个空字符串
public FileHandler(String pattern, int limit, int count, boolean append) throws IOException, SecurityException
FileHandler是基于LogManager属性(或其默认值)配置的,除了使用给定的模式参数作为文件名模式,文件限制设置为limit参数,文件数设置为给定的计数参数,附加模式设置为给定的append参数。
计数必须至少为1。
pattern
- 命名输出文件的模式
limit
- 写入任何一个文件的最大字节数
count
- 要使用的文件数
append
- 指定追加模式
IOException
- 如果存在打开文件的IO问题。
SecurityException
- 如果安全管理器存在,并且呼叫者没有
LoggingPermission("control") 。
IllegalArgumentException
- 如果是
limit < 0
或
count < 1
。
IllegalArgumentException
- 如果pattern是一个空字符串
public void publish(LogRecord record)
publish
在
StreamHandler
record
- 日志事件的描述。
空值记录被默认忽略并且未发布
public void close() throws SecurityException
close
在
StreamHandler
类
SecurityException
- 如果安全管理器存在,并且呼叫者没有
LoggingPermission("control") 。