Log4j2 JsonLayout ThreadContext - регистрировать только ключ и значение - PullRequest
0 голосов
/ 06 февраля 2020

Я использую Log4J2 для структурированного ведения журнала (json) в моем приложении

Моя конфигурация такая, как показано ниже -

      <RollingFile
                name=""
                fileName=""
                filePattern=""
                ignoreExceptions="false">
            <JsonLayout  complete="true" compact="false" properties="true"   ></JsonLayout>
  <PatternLayout>
                <pattern>%d [%t] %p %c %X - %m%n</pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="10MB" />
            </Policies>
            <DefaultRolloverStrategy max="5" />

        </RollingFile>

Способ печати моего журнала, как показано ниже -

   {
  "timeMillis" : 1580995302702,
  "thread" : "main",
  "level" : "INFO",
  "loggerName" : "com.MyClass",
  "message" : "JOB start - JOB Instance ID - 4943142 ",
  "endOfBatch" : false,
  "loggerFqcn" : "org.apache.logging.slf4j.Log4jLogger",
  "contextMap" : [ {
    "key" : "myKey",
    "value" : "myValue"
  } ]
}

Но внутри contextMap - он печатает значение ключа отдельно, как я хочу, чтобы он печатал contextMap, как показано ниже

  {
  "timeMillis" : 1580995302702,
  "thread" : "main",
  "level" : "INFO",
  "loggerName" : "com.MyClass",
  "message" : "JOB start - JOB Instance ID - 4943142 ",
  "endOfBatch" : false,
  "loggerFqcn" : "org.apache.logging.slf4j.Log4jLogger",
  "contextMap" : [ {
    "myKey" : "myValue"
  } ]
}

любая помощь приветствуется

...