Gibt es ein Protokolllayout, das JSON-Objekte mit Nachrichtenparametern als Attribute erstellt?

Ich möchte Log-Ereignisse als JSON-Objekte mit parametrisierten String-Meldungen an Loggly senden. Unser Projekt hat derzeit eine Menge Code, der so aussieht:

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

Wir verwenden derzeit Logback als SLF4J-Backend und LogbacksJsonLayout um unsere ILogEvent-Objekte in JSON zu serialisieren. Folglich sehen unsere Protokollereignisse zu dem Zeitpunkt, an dem sie an Loggly gesendet werden, folgendermaßen aus:

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

Während dies funktioniert, sendet es eine anderemessage Zeichenfolge für jeden Wert vonsomeParameter, was die automatischen Filter von Loggly so gut wie unbrauchbar macht.

Stattdessen hätte ich gerne ein Layout, das JSON wie folgt erstellt:

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

Mit diesem Format kann Loggly alle Protokollereignisse mit der Nachricht gruppierenThis is a log message with a parameter zusammen, unabhängig vom Wert vonsomeParameter.

Es sieht aus wieLogstashs KV-Filter Hat so etwas zu tun? Gibt es eine Möglichkeit, diese Aufgabe mit Logback auszuführen, abgesehen davon, dass ich ein eigenes Layout schreibe, das eine benutzerdefinierte Serialisierung des ILogEvent-Objekts durchführt?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage