我正在尝试设置日志记录到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
答案 0 :(得分:0)
我遇到了完全相同的错误。
有两个类可以解析日期模式,FixedDateFormat 和 FastDateFormat。该错误来自 FastDateFormat,因为它不支持日期字段中的“n”格式。调用 FastDateFormat 的原因是在构建显示格式期间,FixedDateFormat 无法将日期模式识别为有效。
我研究了这个问题中的规范,找到了 FixedDateFormat 没有按预期解析日期模式的原因,但我找不到原因。如果我找到原因,我会发布此答案的更新。
在我的例子中,我有模式“dd MMM YYYY HH:mm:ss,nnnnnnnnn”而不是有效模式“dd MMM yyyy HH:mm:ss,nnnnnnnnn”(注意“y”的错误大写) .