Я хочу отправить события журнала в Loggly как объекты JSON с параметризованными строковыми сообщениями. В нашем проекте в настоящее время много кода, который выглядит так:
String someParameter = "1234";
logger.log("This is a log message with a parameter {}", someParameter);
В настоящее время мы используем Logback как наш бэкэнд SLF4J и Logback JsonLayout для сериализации наших объектов ILogEvent в JSON. В результате, к тому времени, когда наши события журнала отправляются в Loggly, они выглядят так:
{
"message": "This is a log message with a parameter 1234",
"level": INFO,
....
}
Пока это работает, он отправляет другую строку message
для каждого значения someParameter
, что делает автоматические фильтры Loggly рядом с бесполезными.
Вместо этого я хотел бы иметь макет, который создает JSON, который выглядит следующим образом:
{
"message": "This is a log message with a parameter {}",
"level": INFO,
"parameters": [
"1234"
]
}
Этот формат позволяет Loggly группировать все события журнала с сообщением This is a log message with a parameter
вместе, независимо от значения someParameter
.
Похоже, что фильтр Logstash KV делает что-то вроде этого - есть ли способ выполнить эту задачу с помощью Logback, за исключением написания собственного макет, который выполняет пользовательскую сериализацию объекта ILogEvent?