28

パラメータ化された文字列メッセージを含む JSON オブジェクトとしてログ イベントを Loggly に送信したいと考えています。私たちのプロジェクトには現在、次のようなコードがたくさんあります。

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

現在、SLF4J バックエンドとして Logback を使用し、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"
    ]
}

この形式により、LogglyThis is a log message with a parameterは の値に関係なく、すべてのログ イベントをメッセージとともにグループ化できますsomeParameter

Logstash の KV フィルターは次のようなことを行っているようです。ILogEvent オブジェクトのカスタム シリアル化を実行する独自のレイアウトを作成する以外に、Logback でこのタスクを達成する方法はありますか?

4

5 に答える 5