模块  java.logging
软件包  java.util.logging

Class FileHandler


  • public class FileHandler
    extends StreamHandler
    简单文件记录Handler

    FileHandler可以写入指定的文件,也可以写入一组旋转的文件。

    对于一组旋转文件,当每个文件达到给定的大小限制时,它将被关闭,旋转并打开一个新文件。 通过在基本文件名中添加“0”,“1”,“2”等来命名较旧的文件。

    默认情况下,IO库中启用了缓冲,但每个日志记录在完成时都会刷新。

    默认情况下, XMLFormatter类用于格式化。

    配置:默认情况下,使用以下LogManager配置属性初始化每个FileHandler ,其中<handler-name>引用处理程序的完全限定类名。 如果未定义属性(或具有无效值),则使用指定的默认值。

    • <处理程序名> .LEVEL指定了默认级别Handler (默认为Level.ALL )。
    • <handler-name> .filter指定要使用的Filter类的名称(默认为no Filter )。
    • <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”是解决冲突的唯一编号
    • “%%”转换为单个百分号“%”
    如果未指定“%g”字段且文件计数大于1,则生成的数字将添加到生成的文件名的末尾,在点之后。

    因此,例如,计数为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
    • 构造方法详细信息

      • 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 - 日志事件的描述。 静默忽略空记录,不会发布