最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何給asp.net core寫個中間件記錄接口耗時

 更新時間:2019年09月02日 15:46:43   作者:WeihanLi  
這篇文章主要給大家介紹了關(guān)于如何給asp.net core寫個中間件記錄接口耗時的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用asp.net core具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

Intro

寫接口的難免會遇到別人說接口比較慢,到底慢多少,一個接口服務(wù)器處理究竟花了多長時間,如果能有具體的數(shù)字來記錄每個接口耗時多少,別人再說接口慢的時候看一下接口耗時統(tǒng)計,如果幾毫秒就處理完了,對不起這鍋我不背。

中間件實現(xiàn)

asp.net core 的運(yùn)行是一個又一個的中間件來完成的,因此我們只需要定義自己的中間件,記錄請求開始處理前的時間和處理結(jié)束后的時間,這里的中間件把請求的耗時輸出到日志里了,你也可以根據(jù)需要輸出到響應(yīng)頭或其他地方。

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;
 }
}

中間件配置

在 Startup 里配置請求處理管道,示例配置如下:

app.UsePerformanceLog();

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

示例

在日志里按 Logger 名稱 “PerformanceLog” 搜索日志,日志里的 ElapsedMilliseconds 就是對應(yīng)接口的耗時時間,也可以按 ElapsedMilliseconds 范圍來搜索,比如篩選耗時時間大于 1s 的日志

Memo

這個中間件比較簡單,只是一個處理思路。

大型應(yīng)用可以用比較專業(yè)的 APM 工具,最近比較火的 Skywalking 項目可以了解一下,支持 .NET Core, 詳細(xì)信息參考: https://github.com/SkyAPM/SkyAPM-dotnet

Reference

https://github.com/WeihanLi/ActivityReservation

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。

相關(guān)文章

最新評論

启东市| 浑源县| 海宁市| 精河县| 永康市| 新安县| 武邑县| 内黄县| 鄱阳县| 南漳县| 泸水县| 巨鹿县| 峨边| 临夏县| 崇信县| 大竹县| 天门市| 泾源县| 阳东县| 深泽县| 铜川市| 太保市| 深州市| 个旧市| 阿合奇县| 班戈县| 南昌县| 青河县| 连城县| 棋牌| 合川市| 永康市| 定西市| 金湖县| 宜君县| 饶河县| 永德县| 得荣县| 巨鹿县| 青岛市| 洪雅县|