小さなイベント ロギング フレームワークの適切な抽象化を概念化するのに苦労しており、ここで適用できる実際の比較対象は見つかりませんでした。
概要: Web アプリケーションは、サーバー側からイベントをログに記録する必要があります。イベント データは json でエンコードされ、フラット ファイルに書き込まれます。イベントには、ページ ビュー、サインアップ、エラー状態などがあります。
すべてのイベントには、Web リクエスト情報やセッション状態などの一連のコア データが含まれます。どのイベントでも、記録する追加データを定義できる必要があります。
理想的には、イベントを開始するためのインターフェイスは最小限に抑えます。イベント定義とデータ要件は、単一の構成ファイルで定義する必要があります。データ検証とデータ変換は、この構成ファイルの背後に隠されている必要があります。つまり、イベントをログに記録するためのインターフェイスには、イベント名と、イベントに変換および記録されるデータ構造のみが必要です。
私の当初の考えでは、単一のデータ構造が単一の関数にマップされ、その責任はデータ構造をディクショナリに変換し、最終的に最終的なイベント オブジェクトにマージされ、json でエンコードされてファイルに書き込まれるというものでした。これらを「作曲家」関数と呼んでいます。Django の用語では、構成ファイル内の何かが、たとえば、ビューに渡された HTTP 要求オブジェクトを「request_composer」関数にマップします。この関数は、そのリクエスト オブジェクトから引き出されたデータの辞書を作成します。ビューから発行されるイベントは、その「要求」オブジェクトを渡す必要があります。
私の質問は、任意のデータ構造をきれいに変換して最終的なデータ構造にマージする、見落としたパターンまたは抽象化があるかどうかということだと思います。この「単一のデータ型が単一の変換関数にマップされる」というのは、少しぎこちなく、洗練されていないように感じます。また、単一のトランスフォーマーが複数の引数を受け入れることが理にかなっている場合にも、問題が発生します。