XMLFormatter (Java SE 9 & JDK 9 ) (original) (raw)
- java.util.logging.Formatter
- java.util.logging.XMLFormatter
public class XMLFormatter
extends Formatter
Format a LogRecord into a standard XML format.
The DTD specification is provided as Appendix A to the Java Logging APIs specification.
The XMLFormatter can be used with arbitrary character encodings, but it is recommended that it normally be used with UTF-8. The character encoding can be set on the output Handler.
Implementation Requirements:
Since JDK 9, instances of LogRecord contain an Instant which can have nanoseconds below the millisecond resolution. The DTD specification has been updated to allow for an optional<nanos>
element. By default, the XMLFormatter will compute the nanosecond adjustment below the millisecond resolution (usingLogRecord.getInstant().getNano() % 1000_000
) - and if this is not 0, this adjustment value will be printed in the new <nanos>
element. The event instant can then be reconstructed usingInstant.ofEpochSecond(millis/1000L, (millis % 1000L) * 1000_000L + nanos)
where millis
and nanos
represent the numbers serialized in the <millis>
and <nanos>
elements, respectively.
The <date>
element will now contain the whole instant as formatted by the DateTimeFormatter.ISO_INSTANT formatter.
For compatibility with old parsers, XMLFormatters can be configured to revert to the old format by specifying a<xml-formatter-fully-qualified-class-name>.useInstant = false
property in the logging configuration. When useInstant
is false
, the old formatting will be preserved. When useInstant
is true
(the default), the <nanos>
element will be printed and the<date>
element will contain the formatted instant.
For instance, in order to configure plain instances of XMLFormatter to omit the new <nano>
element,java.util.logging.XMLFormatter.useInstant = false
can be specified in the logging configuration.
Since:
1.4
Constructor Summary
Constructors
Constructor Description XMLFormatter() Creates a new instance of XMLFormatter. Method Summary
All Methods Instance Methods Concrete Methods
Modifier and Type Method Description String format(LogRecord record) Format the given message to XML. String getHead(Handler h) Return the header string for a set of XML formatted records. String getTail(Handler h) Return the tail string for a set of XML formatted records. * ### Methods inherited from class java.util.logging.[Formatter](../../../java/util/logging/Formatter.html "class in java.util.logging") `[formatMessage](../../../java/util/logging/Formatter.html#formatMessage-java.util.logging.LogRecord-)` * ### Methods inherited from class java.lang.[Object](../../../java/lang/Object.html "class in java.lang") `[clone](../../../java/lang/Object.html#clone--), [equals](../../../java/lang/Object.html#equals-java.lang.Object-), [finalize](../../../java/lang/Object.html#finalize--), [getClass](../../../java/lang/Object.html#getClass--), [hashCode](../../../java/lang/Object.html#hashCode--), [notify](../../../java/lang/Object.html#notify--), [notifyAll](../../../java/lang/Object.html#notifyAll--), [toString](../../../java/lang/Object.html#toString--), [wait](../../../java/lang/Object.html#wait--), [wait](../../../java/lang/Object.html#wait-long-), [wait](../../../java/lang/Object.html#wait-long-int-)`
Constructor Detail
* #### XMLFormatter public XMLFormatter() Creates a new instance of XMLFormatter. Implementation Requirements: Since JDK 9, the XMLFormatter will print out the record [event time](../../../java/util/logging/LogRecord.html#getInstant--) as an Instant. This instant has the best resolution available on the system. The `<date>` element will contain the instant as formatted by the [DateTimeFormatter.ISO\_INSTANT](../../../java/time/format/DateTimeFormatter.html#ISO%5FINSTANT). In addition, an optional `<nanos>` element containing a nanosecond adjustment will be printed if the instant contains some nanoseconds below the millisecond resolution. This new behavior can be turned off, and the old formatting restored, by specifying a property in the [logging configuration](../../../java/util/logging/LogManager.html#getProperty-java.lang.String-). If `LogManager.getLogManager().getProperty( this.getClass().getName()+".useInstant")` is `"false"` or`"0"`, the old formatting will be restored.
Method Detail
* #### format public [String](../../../java/lang/String.html "class in java.lang") format([LogRecord](../../../java/util/logging/LogRecord.html "class in java.util.logging") record) Specified by: `[format](../../../java/util/logging/Formatter.html#format-java.util.logging.LogRecord-)` in class `[Formatter](../../../java/util/logging/Formatter.html "class in java.util.logging")` Parameters: `record` \- the log record to be formatted. Returns: a formatted log record * #### getHead public [String](../../../java/lang/String.html "class in java.lang") getHead([Handler](../../../java/util/logging/Handler.html "class in java.util.logging") h) Return the header string for a set of XML formatted records. Overrides: `[getHead](../../../java/util/logging/Formatter.html#getHead-java.util.logging.Handler-)` in class `[Formatter](../../../java/util/logging/Formatter.html "class in java.util.logging")` Parameters: `h` \- The target handler (can be null) Returns: a valid XML string * #### getTail public [String](../../../java/lang/String.html "class in java.lang") getTail([Handler](../../../java/util/logging/Handler.html "class in java.util.logging") h) Return the tail string for a set of XML formatted records. Overrides: `[getTail](../../../java/util/logging/Formatter.html#getTail-java.util.logging.Handler-)` in class `[Formatter](../../../java/util/logging/Formatter.html "class in java.util.logging")` Parameters: `h` \- The target handler (can be null) Returns: a valid XML string
Report a bug or suggest an enhancement
For further API reference and developer documentation see the Java SE Documentation, which contains more detailed, developer-targeted descriptions with conceptual overviews, definitions of terms, workarounds, and working code examples.
Java is a trademark or registered trademark of Oracle and/or its affiliates in the US and other countries.
Copyright © 1993, 2017, Oracle and/or its affiliates, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
All rights reserved. Use is subject to license terms and the documentation redistribution policy.