RFR: 8072645: java.util.logging should use java.time to get more precise time stamps

Daniel Fuchs daniel.fuchs at oracle.com
Fri Feb 13 14:56:28 UTC 2015


Please find below a patch for:

8072645: java.util.logging should use java.time to get more
          precise time stamps




The patch is made of the following pieces:

  - LogRecord uses java.time.Clock's systemClock to get an
    Instant in the best available resolution.

    The instant is split into a number of milliseconds (a long)
    and a nanosecond adjustment (an int).
    The number of milliseconds is the same than what would have
    been obtained by calling System.currentTimeMillis().

  - LogRecord acquires a new serializable int nanoAdjustement field,
    which can be used together with the number of milliseconds
    to reconstruct the instant.

  - SimpleFormatter is updated to pass a ZoneDateTime
    instance to String.format, instead of a Date.

    The effect of that is that the format string can now
    be configure to print the full instant precision, if

  - XMLformatter will add a new <nanos> element after the
    <millis> element - if the value of the nanoAdjustment
    field is not 0.

    The <date> string will also contain the nano second
    adjustment as well as the zone offset as formatted by

Compatibility considerations:

- The serial for of log record is backward/forward compatible.
   I added a test to verify that.

- XMLFormatter has acquired a new configurable property
   '<FQCN>.printNanos' which allows to revert to the old
   XML format, should the new format cause issues in
   existing applications.

- The logger.dtd will need to be updated, to support the
   new optional <nanos> element. And for this matter,
   should we update the logger.dtd or rather define a
   See planned modification:

best regards,

-- daniel

More information about the core-libs-dev mailing list