パラメータ化された文字列メッセージを含む 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 でこのタスクを達成する方法はありますか?