欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何給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)計,如果幾毫秒就處理完了,對不起這鍋我不背。

中間件實(shí)現(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 項(xiàng)目可以了解一下,支持 .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)文章

  • ASP.NET Datagridview自動換行的小例子

    ASP.NET Datagridview自動換行的小例子

    這篇文章介紹了ASP.NET Datagridview自動換行的代碼,有需要的朋友可以參考一下,希望對你有所幫助
    2013-07-07
  • 基于.Net中的協(xié)變與逆變的深入分析

    基于.Net中的協(xié)變與逆變的深入分析

    本篇文章是對.Net中的協(xié)變與逆變進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • ASP.NET?MVC中的路由原理與用法

    ASP.NET?MVC中的路由原理與用法

    本文詳細(xì)講解了ASP.NET?MVC中的路由原理與用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • .Net中關(guān)于stirng轉(zhuǎn)System.Type的一種實(shí)現(xiàn)思路詳解

    .Net中關(guān)于stirng轉(zhuǎn)System.Type的一種實(shí)現(xiàn)思路詳解

    這篇文章主要給大家介紹了.Net中關(guān)于stirng轉(zhuǎn)System.Type的一種實(shí)現(xiàn)思路的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • 理解ASP.NET?Core?錯誤處理機(jī)制(Handle?Errors)

    理解ASP.NET?Core?錯誤處理機(jī)制(Handle?Errors)

    這篇文章主要介紹了理解ASP.NET?Core?錯誤處理(Handle?Errors)?,在這里需要注意的是,與“異常處理”有關(guān)的中間件,一定要盡早添加,這樣,它可以最大限度的捕獲后續(xù)中間件拋出的未處理異常。感興趣的朋友跟隨小編一起看看吧
    2021-11-11
  • ASP.NET Core與NLog集成的完整步驟

    ASP.NET Core與NLog集成的完整步驟

    NLog是一個免費(fèi)的日志記錄框架,專門為.net平臺下的框架提供日志功能,下面這篇文章主要給大家介紹了關(guān)于ASP.NET Core與NLog集成的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-07-07
  • ADO.NET無連接模式的詳細(xì)介紹

    ADO.NET無連接模式的詳細(xì)介紹

    這篇文章詳細(xì)介紹了ADO.NET無連接模式及操作實(shí)例,有需要的朋友可以參考一下
    2013-10-10
  • aspx文件格式使用URLRewriter實(shí)現(xiàn)靜態(tài)化變成html

    aspx文件格式使用URLRewriter實(shí)現(xiàn)靜態(tài)化變成html

    如何隱藏aspx文件格式,變成html,使用asp.net 開發(fā)的網(wǎng)頁程序,使用URLRewriter.dll 實(shí)現(xiàn)靜態(tài)化,接下來將介紹下具體操作步驟,感興趣的朋友可以參考下
    2013-04-04
  • .net c# gif動畫如何添加圖片水印實(shí)現(xiàn)思路及代碼

    .net c# gif動畫如何添加圖片水印實(shí)現(xiàn)思路及代碼

    本文將詳細(xì)介紹下c#實(shí)現(xiàn)gif動畫添加圖片水印,思路很清晰,感興趣的你可以參考下哈,希望可以幫助到你
    2013-03-03
  • .Net Core WebApi部署在Linux服務(wù)器上的方法

    .Net Core WebApi部署在Linux服務(wù)器上的方法

    這篇文章主要介紹了.Net Core WebApi部署在Linux服務(wù)器上的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03

最新評論