- java.lang.Object
-
- java.util.logging.Formatter
-
- java.util.logging.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)
来重构事件瞬间,其中millis
和nanos
代表序列化在<millis>
和<nanos>
元素中的数字。
<date>
元素现在将包含DateTimeFormatter.ISO_INSTANT
格式化程序格式化的整个瞬间。为了与旧解析器兼容,可以通过在日志记录配置中指定
<xml-formatter-fully-qualified-class-name>.useInstant = false
property ,将XMLFormatter配置为恢复为旧格式。 当useInstant
为false
,旧格式将被保留。 当useInstant
是true
(缺省值),该<nanos>
元件将被打印和<date>
元素将包含formatted瞬间。例如,为了配置XMLFormatter的简单实例以省略新的
<nano>
元素,可以在日志记录配置中指定java.util.logging.XMLFormatter.useInstant = false
。 - 从以下版本开始:
- 1.4
-
-
构造方法摘要
构造方法 Constructor 描述 XMLFormatter()
创建一个新的XMLFormatter实例。
-
-
-
构造方法详细信息
-
XMLFormatter
public XMLFormatter()
创建一个新的XMLFormatter实例。- 实现要求:
-
从JDK 9开始,XMLFormatter将打印出作为Instant的记录event time 。
这个瞬间有系统上可用的最佳分辨率。
<date>
元素将包含由DateTimeFormatter.ISO_INSTANT
格式化的时刻 。 此外,如果该瞬间含有低于毫秒分辨率的纳秒,则将打印包含纳秒调整的可选<nanos>
元素。可以关闭此新行为,并通过在logging configuration中指定属性来恢复旧的格式。 如果
LogManager.getLogManager().getProperty( this.getClass().getName()+".useInstant")
是"false"
或"0"
,旧的格式将被恢复。
-
-
方法详细信息
-
format
public String format(LogRecord record)
将给定的消息格式化为XML。这个方法可以在一个子类中被覆盖。 建议使用
Formatter.formatMessage(java.util.logging.LogRecord)
方便的方法来本地化和格式化消息字段。
-
-