澳门金沙网上娱乐官网

 更新时间:2019年09月02日 15:46:43   作者:WeihanLi   我要评论

这篇文章主要给大家介绍了关于如何给asp.net core写个中间件记录接口耗时的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用asp.net core具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

Intro

写接口的难免会遇到别人说接口比较慢,到底慢多少,一个接口服务器处理究竟花了多长时间,如果能有具体的数字来记录每个接口耗时多少,别人再说接口慢的时候看一下接口耗时,如果几毫秒就处理完了,对不起这锅我不背。

中间件实现

asp.net core 的运行是一个又一个的中间件来完成的,因此我们只需要定义自己的中间件,记录请求开始处理前的时间和处理结束后的时间,这里的中间件把请求的耗时输出到日志里了,你也可以根据需要输出到响应头或其他地方。

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 就是对应接口的耗时时间,也可以按 ElapsedMilliseconds 范围来搜索,比如筛选耗时时间大于 1s 的日志

Memo

这个中间件比较简单,只是一个处理思路。

大型应用可以用比较专业的 APM 工具,最近比较火的 Skywalking 项目可以了解一下,支持 .NET Core, 详细信息参考: https://github.com/SkyAPM/SkyAPM-dotnet

Reference

https://github.com/WeihanLi/ActivityReservation

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

相关文章

  • .NET Windows 多线程thread编程

    .NET Windows 多线程thread编程

    .net里使用线程,用thread类,定义线程,启动,销毁,全部包括在这个类里,定义一个线程,必须指定这个线程的函数,也就是这个线程是做什么的
    2012-12-12
  • 浅析.NET逻辑分层架构

    浅析.NET逻辑分层架构

    这篇文章主要介绍了.NET逻辑分层架构,分层架构的三个基本层次分别为:表示层、业务逻辑层和数据访问层,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • asp net core 2.1中如何使用jwt(从原理到精通)

    asp net core 2.1中如何使用jwt(从原理到精通)

    这篇文章主要给大家介绍了关于asp net core 2.1中如何使用jwt(从原理到精通)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
    2018-11-11
  • Asp.Net二级域名共享Forms身份验证、下载站/图片站的授权访问控制

    Asp.Net二级域名共享Forms身份验证、下载站/图片站的授权访问控制

    我们平时一般在做图片或者文件下载权限控制的时候基本都是控制到下载页面的,当你的下载地址暴露后,浏览者就直接可以通过文件地址进行下载了,这时候也就出现了我们常说的盗链
    2012-02-02
  • .net自带的库生成zip文件的方法

    .net自带的库生成zip文件的方法

    平时我们创建Zip文件的时候,要么用现成的软件,要么用第三方的开源库。其实用.net自带的类操作起来也非常方便
    2012-08-08
  • ASP.NET环境下为网站增加IP过滤功能

    ASP.NET环境下为网站增加IP过滤功能

    通过深入的交流和沟通,确认了该发电厂在企业网站用户访问控制方面的改进要求
    2009-06-06
  • 网页WEB打印控件制作

    网页WEB打印控件制作

    这篇文章主要介绍了网页WEB打印控件制作 的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • ASP.NET获取URL方法汇总

    ASP.NET获取URL方法汇总

    本文主要介绍ASP.NET获取URL的各种方法,希望能给需要的朋友一些帮助。
    2016-04-04
  • Asp.net GridView使用大全(分页实现)

    Asp.net GridView使用大全(分页实现)

    关于GridView的使用涉及很多,网络上零零散散的有一些,为了让自己使用方便,也为了大家能很好的学习与工作,我把网络上的GridView使用方法收集了一些
    2013-04-04
  • ASP.NET MVC从视图传参到控制器的几种形式

    ASP.NET MVC从视图传参到控制器的几种形式

    这篇文章主要介绍了ASP.NET MVC从视图传参到控制器的几种形式,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-04-04

最新评论