私はどのアプローチが最適かを理解しようとしています:
リクエストに基づいてさまざまな情報 (URL、IP アドレスなど) ですべてのログを充実させたい Owin パイプラインがあります。
私が見ているように、OwinForContext()
パイプラインの Serilog には 2 つの可能性があります。
public override async Task Invoke(IOwinContext context)
{
using (LogContext.PushProperties(
RequestUri(context),
RemoteIp(context)))
{
await Next.Invoke(context);
}
}
または、Serilog を構成するときにエンリッチャーをセットアップします。
var configuration = new LoggerConfiguration()
.Enrich.WithRequestUrl()
.Enrich.WithRequestClientIp()
...
これを行う正しい方法または間違った方法はありますか?個人的には、Owin コンテキストにアクセスする簡単な方法を提供してくれる LogContext が気に入っていますが、一方で、すべてのリクエストがすべてのエンリッチャーの評価をトリガーします。しかし、繰り返しになりますが、ロギングステートメントごとではなく、リクエスト中に一度だけ行われますか?
これはもっぱら意見に基づくものであり、したがって閉鎖されるべきですか、それとも、一方のアプローチと他方のアプローチに比べて利点はありますか?