8

API リクエスト/レスポンスを json 形式でログに記録したいと考えています。

予想される LogEntry は次のようなものです

{ 
 "timestamp" : "...",
 "level" : "DEBUG",
 "headers" : [
    "header1" : "value1",
    "header2" : "value2",
    "header3" : "value3"
 ],
 "requestPayload" : "<Request Json>"   // prefereablly as sub-document, worst case string is fine.   
 "labels" : [        //key fields which can be used for searching the logentry
     "searchField1" : "....",
     "searchField2" : "....",
     "searchField3" : "...."
  ]
}

私の質問は:

Logback を使用して、ネストされたフィールド (上記の例のヘッダー、ラベル、requestPaylod など) を json サブドキュメントとしてログに記録する方法。MDC を試してみましたが、「文字列、文字列」のみのマップに限定されており、最初のレベル以降のすべてのフィールドを文字列と見なします。

このためのカスタム ロガーを作成するのは嫌いであり、実績のあるログ フレームワーク (logback/log4j) の優れた機能を使用して、ログ レベルやログ イベントのタイム スタンプなどを制御したいと考えています。

4

2 に答える 2