Do note that the FastDateFormat et al. classes are copied directly
from Apache Commons. Most changes done there are relevant to upstream.
:)

On Fri, 7 May 2021 at 10:14, Volkan Yazıcı <volkan.yaz...@gmail.com> wrote:
>
> 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.

Reply via email to