Web サイトで発生したばかりのイベントに関連するいくつかのプロパティを持つオブジェクトがあります。
このイベントをログに記録し、その各プロパティが Seq にプロパティとして表示されるようにします。ただし、実際のログ メッセージ テキストからほとんどのプロパティを省略したいので、メッセージ テンプレートに含めたくありません。v
私がこれを行う場合:
var logInfo= new LogInfo() {Foo = 1, Bar= "Pending"};
logger.Information("{@event}", logInfo);
ログに対して Seq で直接点灯する唯一のプロパティは、@event プロパティです。実際には次のようになります。
だから私はこれを試しました:
var enricher = new DnnLogInfoEnricher(logInfo);
using (LogContext.PushProperties(enricher))
{
Log.Logger.Information("Event: {logInfo}", logInfo.LogTypeKey, logInfo.Exception);
}
しかし、このアプローチに関する私の懸念は、このメソッドが非常に多くの回数起動するため、作成されるオブジェクトの数を維持したいので、毎回新しいエンリッチャー オブジェクト インスタンスを作成する必要がないことです。一般的に可能な限り低く.. GC の影響について懸念しているという理由だけで (おそらく、私の懸念は根拠がありませんか?)。
これは私が望むものを達成するための正しい/正しい方法ですか(つまり、エンリッチャーを使用していますか)、それとも何か不足していますか?
乾杯!