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

Class XMLFormatter


  • public class XMLFormatter
    extends Formatter
    将LogRecord格式化为标准XML格式。

    DTD规范作为Java Logging API规范的附录A提供。

    XMLFormatter可以与任意字符编码一起使用,但建议它通常与UTF-8一起使用。 可以在输出处理程序上设置字符编码。

    实现要求:
    从JDK 9开始, LogRecord的实例包含Instant ,其可以具有低于毫秒分辨率的纳秒。 DTD规范已更新,允许使用可选的<nanos>元素。 默认情况下,XMLFormatter将计算低于毫秒分辨率的纳秒调整(使用LogRecord.getInstant().getNano() % 1000_000 ) - 如果不是0,则此调整值将打印在新的<nanos>元素中。 然后可以使用Instant.ofEpochSecond(millis/1000L, (millis % 1000L) * 1000_000L + nanos)重建事件瞬间,其中millisnanos表示在<millis><nanos>元素中序列化的数字。
    <date>元素现在将包含由DateTimeFormatter.ISO_INSTANT格式化程序格式化的整个瞬间。

    为了与旧解析器兼容,可以将XMLFormatters配置为通过在日志记录配置中指定<xml-formatter-fully-qualified-class-name>.useInstant = false property来恢复为旧格式。 useInstantfalse ,将保留旧格式。 useInstanttrue (缺省值),该<nanos>元件将被打印和<date>元素将包含formatted瞬间。

    例如,为了配置XMLFormatter的普通实例以省略新的<nano>元素,可以在日志记录配置中指定java.util.logging.XMLFormatter.useInstant = false

    从以下版本开始:
    1.4
    • 构造方法详细信息

      • XMLFormatter

        public XMLFormatter()
        创建XMLFormatter的新实例。
        实现要求:
        从JDK 9开始,XMLFormatter将打印出记录event time作为Instant。 此瞬间具有系统上可用的最佳分辨率。 <date>元素将包含由DateTimeFormatter.ISO_INSTANT格式化的瞬间 此外,如果瞬间包含低于毫秒分辨率的纳秒,则将打印包含纳秒调整的可选<nanos>元素。

        通过在logging configuration中指定属性,可以关闭此新行为,并恢复旧格式。 如果LogManager.getLogManager().getProperty( this.getClass().getName()+".useInstant")"false""0" ,将恢复旧格式。

    • 方法详细信息

      • getHead

        public String getHead​(Handler h)
        返回一组XML格式记录的标题字符串。
        重写:
        getHead在类 Formatter
        参数
        h - 目标处理程序(可以为null)
        结果
        有效的XML字符串
      • getTail

        public String getTail​(Handler h)
        返回一组XML格式记录的尾部字符串。
        重写:
        getTail在类 Formatter
        参数
        h - 目标处理程序(可以为null)
        结果
        有效的XML字符串