時間のかかるレコードインタフェースを書くためにコアミドルウェアをASP.NETには、

時間のかかるレコードインタフェースを書くためにコアミドルウェアをASP.NETには、

イントロ

必然的に、人々は、インターフェイスが最後にはるかに遅い、比較的遅いと言う遭遇するインタフェースを記述し、インターフェースサーバは時間が​​かかり、各インターフェイスの数を記録するために特定の番号がある場合には、かかった時間を正確に処理し、他の人はそれが遅くインタフェースを参照する時が来たと言います時間のかかる程度のインターフェイスの統計数ミリ秒プロセスが終わったならば、私はこの鍋をバックアップすることはできませんごめんなさい。

ミドルウェア

asp.netコアは完了するために、別のミドルウェア後のいずれかを実行しているので、我々は唯一の処理時間と処理の開始前に要求した後、独自のミドルウェア、記録時間を定義する必要があり、ミドルウェア、どこに時間がかかり要求ログへの出力は、あなたはまた、頭部や他の場所に対応するために、出力に必要なことができて。

public static class PerformanceLogExtension
{
    public static IApplicationBuilder UsePerformanceLog(this IApplicationBuilder applicationBuilder)
    {
        applicationBuilder.Use(async (context, next) =>
            {
                var profiler = new StopwatchProfiler();
                profiler.Start();
                await next();
                profiler.Stop();

                var logger = context.RequestServices.GetService<ILoggerFactory>()
                    .CreateLogger("PerformanceLog");
                logger.LogInformation("TraceId:{TraceId}, RequestMethod:{RequestMethod}, RequestPath:{RequestPath}, ElapsedMilliseconds:{ElapsedMilliseconds}, Response StatusCode: {StatusCode}",
                                        context.TraceIdentifier, context.Request.Method, context.Request.Path, profiler.ElapsedMilliseconds, context.Response.StatusCode);
            });
        return applicationBuilder;
    }
}

Middleware構成

Startup次のようにレーン構成要求処理パイプライン、例示的な構成です。

app.UsePerformanceLog();

app.UseAuthentication();
app.UseMvc(routes =>
    {
      // ...
    });
// ...

ログ「PerformanceLog」検索ログでは、名前のロガーでログインするElapsedMilliseconds時間が対応インタフェースを消費している、あなたが押すことができElapsedMilliseconds、そのような時間の時間のかかるスクリーニングログとして、検索するためには、1秒以上であります

パフォーマンスログ

メモ

本ミドルウェアは、ただの思考プロセスは比較的簡単です。

大規模なアプリケーションでは、火災の最近の比較、より専門的なAPMツールを使用することができますSkywalking:プロジェクトは、.NETのコア、詳細なリファレンス情報のサポートを見つけることができますhttps://github.com/SkyAPM/SkyAPM-dotnet

参照

おすすめ

転載: www.cnblogs.com/weihanli/p/record-aspnetcore-api-elapsed-milliseconds-via-custom-middleware.html