時間のかかるレコードインタフェースを書くためにコアミドルウェアを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