在JSON布局[Log4j2]中使用自定义参数



我对Log4j2中属性替换、查找和布局参数的含义感到困惑。文档提到JSON布局支持自定义字段。然而,它似乎不支持%d{ISO8601}、%m、%l等转换模式。但是它确实支持Lookups。

因此,当我在xml中定义:

<JsonLayout complete="false" compact="false">
<KeyValuePair key="@timestamp" value="%d{ISO8601}" />
<KeyValuePair key="message" value="%message" />
<KeyValuePair key="process.thread.name" value="%tn" />
</JsonLayout >

作为输出,我只得到字符串%d{ISO8601}%message。。。而不是值。

我试图实现的是一个JSON布局,在这里我可以包含类似于Pattern layout的参数,在Pattern布局中我只需编写<pattern>%d %p %C{1.} [%t] %m%n</pattern>即可获得我想要的内容。或者,我应该使用Pattern布局并使用Pattern layout的JSON编码%enc{%m}{JSON}将JSON格式的字符串缝合在一起吗?

GelfLayout当前支持messagePattern属性,该属性将使用patternLayout仅格式化JSON中的消息字段。我也计划将此添加到JSONLayout中,但尚未完成。有一个新的JsonTemplateLayout正处于合并到Log4j2的最后阶段,它也将支持这一点。您可以从当前的拉取请求中获取布局,也可以等待Log4j 2.14.0版本,因为这两个选项可能都可用。

最新更新