Используйте пользовательские параметры в JSON Layout [Log4j 2] - PullRequest
0 голосов
/ 22 апреля 2020

Я запутался в значении подстановки свойств, поиска и параметров макета в Log4j 2. В документации упоминается , что макет JSON поддерживает настраиваемые поля. Однако кажется, что он не поддерживает шаблоны преобразования, такие как% d {ISO8601},% m,% l и тому подобное. однако он поддерживает поиск.

Таким образом, когда я определяю в 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>%d %p %C{1.} [%t] %m%n</pattern>, чтобы получить то, что я хочу. Или, в качестве альтернативы, я должен использовать макет Pattern и сшить строку в формате JSON, используя кодировку JSON Pattern Layout %enc{%m}{JSON}?

1 Ответ

1 голос
/ 22 апреля 2020

В настоящее время GelfLayout поддерживает атрибут messagePattern, который будет форматировать только поле сообщения в JSON с использованием patternLayout. Я планировал добавить это и в JSONLayout, но пока не сделал этого. Существует новый JsonTemplateLayout, который находится на завершающей стадии объединения в Log4j 2, который также будет поддерживать это. Вы можете либо поработать с текущим пулл-запросом, чтобы получить макет, либо дождаться выпуска Log4j 2.14.0, когда, скорее всего, будут доступны оба варианта.

...