Существует ли схема обратной связи, которая создает объекты JSON с параметрами сообщения в качестве атрибутов?

Я хочу отправлять события журнала в Loggly как объекты JSON с параметризованными строковыми сообщениями. Наш проект в настоящее время имеет много кода, который выглядит следующим образом:

String someParameter = "1234";
logger.log("This is a log message with a parameter {}", someParameter);

В настоящее время мы используем Logback в качестве нашего сервера SLF4J, и Logback'sJsonLayout сериализовать наши объекты ILogEvent в JSON. Следовательно, к тому времени, когда наши события журнала отправляются в Loggly, они выглядят так:

{
    "message": "This is a log message with a parameter 1234",
    "level": INFO,
    ....
}

Хотя это работает, он отправляет другойmessage строка для каждого значенияsomeParameter, что делает автоматические фильтры Loggly рядом с бесполезными.

Вместо этого я хотел бы иметь Layout, который создает JSON, который выглядит следующим образом:

{
    "message": "This is a log message with a parameter {}",
    "level": INFO,
    "parameters": [
        "1234"
    ]
}

Этот формат позволит Loggly сгруппировать все события журнала с сообщениемThis is a log message with a parameter вместе, независимо от стоимостиsomeParameter.

Это выглядит какФильтр Логсташа КВ делает что-то вроде этого - есть ли способ выполнить эту задачу с Logback, если бы не написать свой собственный макет, который выполняет пользовательские сериализации объекта ILogEvent?

Ответы на вопрос(5)

Ваш ответ на вопрос