Log4j上的日期时间模式,纳秒

时间:2018-04-16 20:26:45

标签: logging log4j log4j2 nanotime

我正在尝试设置日志记录到JSON文件,我需要记录纳秒。但是,当我尝试下一个结构时

<JsonLayout compact="true" properties="true" eventEol="true" >
    <KeyValuePair key="timestamp" value="$${date:HH:mm:ss.nnnnnnnnn}" />
</JsonLayout>

我收到错误:

错误日期格式无效:[HH:mm:ss.nnnnnnnnn],使用默认的java.lang.IllegalArgumentException:非法模式字符&#39; n&#39;

我尝试了纳秒的不同模式但没有成功。

对于.log文件,下一个模式有效,但是,它不适用于.json(或者我不正确地应用它)。

<PatternLayout pattern="%d{DEFAULT_NANOS} />

有什么想法吗?

P.S。 Log4j 2.11.0

1 个答案:

答案 0 :(得分:0)

我遇到了完全相同的错误。

有两个类可以解析日期模式,FixedDateFormatFastDateFormat。该错误来自 FastDateFormat,因为它不支持日期字段中的“n”格式。调用 FastDateFormat 的原因是在构建显示格式期间,FixedDateFormat 无法将日期模式识别为有效。

我研究了这个问题中的规范,找到了 FixedDateFormat 没有按预期解析日期模式的原因,但我找不到原因。如果我找到原因,我会发布此答案的更新。

在我的例子中,我有模式“dd MMM YYYY HH:mm:ss,nnnnnnnnn”而不是有效模式“dd MMM yyyy HH:mm:ss,nnnnnnnnn”(注意“y”的错误大写) .