4

私はどのアプローチが最適かを理解しようとしています:

リクエストに基づいてさまざまな情報 (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 が気に入っていますが、一方で、すべてのリクエストがすべてのエンリッチャーの評価をトリガーします。しかし、繰り返しになりますが、ロギングステートメントごとではなく、リクエスト中に一度だけ行われますか?

これはもっぱら意見に基づくものであり、したがって閉鎖されるべきですか、それとも、一方のアプローチと他方のアプローチに比べて利点はありますか?

4

1 に答える 1

3

staticエンリッチメントを機能させるために必要なアンビエント ( ) コンテキスト情報をOwin が提供するとは思えません。そのためLogContext、個人的には最初にバージョンを選びます。

于 2015-09-04T11:15:12.553 に答える