log4j2 JsonLayout标准字段

时间:2019-12-02 18:23:38

标签: java logging log4j2

默认情况下, JsonLayout会生成许多有用的字段。 不幸, 当我提供额外的 KeyValuePair在配置中, 日志条目的内容减少为仅自定义键和 "logEvent"

配置:

<JsonLayout objectMessageAsJsonObject="true"
            propertiesAsList="false"
            properties="true"
            locationInfo="false"
            includeStacktrace="true"
            compact="true"
            complete="false"
            eventEol="true">
    <!--KeyValuePair key="myKey" value="anything"/ -->
</JsonLayout>

KeyValuePair被注释掉时, 日志条目如下所示:

{
    "thread": "main",
    "level": "INFO",
    "loggerName": "MainKt",
    "message": "Hello=10 World=20",
    "endOfBatch": false,
    "loggerFqcn": "org.apache.logging.log4j.spi.AbstractLogger",
    "threadId": 1,
    "contextMap": 
    {
        "test": "2"
    },
    "instant": 
    {
        "epochSecond": 1575310424,
        "nanoOfSecond": 747824500
    },
    "threadPriority": 5
}

当它包含在配置中时:

{"logEvent":"Hello=10 World=20","myKey":"anything"}

如何在keyValue对中包含默认字段? 我不要他们全部 仅levelmarkersmdcloggerNamethreadId。 有这个地图吗? 我在文档中看不到答案。

另一部分是objectMessageAsJsonObject的行为: 如果没有提供其他密钥,我会看到message中带有JSON对象, 但是一旦我提供了任何密钥,它就会消失并且logEvent被填充 根据以前的日志中的任何值(对我来说,这似乎是个错误)。

0 个答案:

没有答案