私は、既存のソフトウェアに統合される監査ログ システムを作成しています。データベース構造には、ログに記録されるアクションに関する詳細の BLOB 用のフィールドが含まれています。派手なものである必要はありません。あまり必要ではありません。必要な場合は、ほとんどの場合、どのメソッドがどのパラメーターで呼び出されたかなどを調べるために、開発者によって読み取られます。これは、おそらく人間が判読できるはずですが、何かによって解析される必要がないことを意味します。したがって、多くのオーバーロードを使用したり、ひどいスイッチ ケースの文字列置換を使用したりするのではなく、詳細ブロブを記述する良い方法は、ログに記録されるアクションに必要なパラメーターの名前と値を取得するためのログ呼び出し用であると考えました。彼らに渡されたもの。いろいろ調べましたが、
これが私が求めているものの大まかなモックです:
Dictionary<string,string> parameters = new Dictionary<string,string>();
foreach (Parameter p in MethodCall)
{
parameters.Add(p.Name, p.Value.ToString());
}
LogEvent(EventType.Something, userID = thisUser, details = parameters);
実際にはそれよりも複雑になる可能性が高いことは理解していますが、一般的な考え方はわかります。私の LogEvent メソッド内には、タイムスタンプを追加し、ユーザー側のログ ビューアー用に説明文を作成するためのいくつかの要素があります (プログラム/データベース構造を公開しないように、管理者や開発者に示すよりも技術的な詳細は少なくなります)。理論的には、ビルドします。パラメーターの詳細のディクショナリからのある種のブロブ (おそらく JSON など)。