Hello, I am trying to tackle LOG4J2-3075 <https://issues.apache.org/jira/browse/LOG4J2-3075> reporting that JsonTemplateLayout doesn't format nanoseconds. I have done some preliminary study and checked *DatePatternConverter* for inspiration. In a nutshell, this is what *DataPatternConverter* does:
private Formatter createFormatter(final String[] options) { final FixedDateFormat fixedDateFormat = FixedDateFormat.createIfSupported(options); if (fixedDateFormat != null) { return createFixedFormatter(fixedDateFormat); } return createNonFixedFormatter(options); } If *FixedDateFormat* supports the user pattern, it uses the *FixedDateFormat*, otherwise it falls back to *FastDateFormat*. Here comes the tricky part... *FixedDateFormat#formatInstant()* supports nanoseconds passed in by the Log4j *Instant* argument. Though *FastDateFormat* doesn't format nanoseconds at all. Hence, if the user pattern is not supported by the *FixedDateFormat*, the fallback *FastDateFormat* doesn't support nanoseconds. The solution I have in mind is to extend *FastDateFormat* to support nanoseconds. This is not easy either: *FastDateFormat* accepts Java *Calendar*, which doesn't support. The not-so-good-but-okayish solution is to add a similar *#formatInstant()* method to *FastDateFormat*. What do you think? Kind regards.