Существует ли схема обратной связи, которая создает объекты 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?