架构师_程序员

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 79|回复: 0

[.NET Core] asp.net core 写个中间件来记录接口耗时

[复制链接]
跳转到指定楼层
楼主
发表于 2019-9-12 17:46:02
zu
写接口的难免会遇到别人说接口比较慢,到底慢多少,一个接口服务器处理究竟花了多长时间,如果能有具体的数字来记录每个接口耗时多少,别人再说接口慢的时候看一下接口耗时统计,如果几毫秒就处理完了,对不起这锅我不背。

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

  1. public static class PerformanceLogExtension
  2. {
  3.     public static IApplicationBuilder UsePerformanceLog(this IApplicationBuilder applicationBuilder)
  4.     {
  5.         applicationBuilder.Use(async (context, next) =>
  6.             {
  7.                 var profiler = new StopwatchProfiler();
  8.                 profiler.Start();
  9.                 await next();
  10.                 profiler.Stop();

  11.                 var logger = context.RequestServices.GetService<ILoggerFactory>()
  12.                     .CreateLogger("PerformanceLog");
  13.                 logger.LogInformation("TraceId:{TraceId}, RequestMethod:{RequestMethod}, RequestPath:{RequestPath}, ElapsedMilliseconds:{ElapsedMilliseconds}, Response StatusCode: {StatusCode}",
  14.                                         context.TraceIdentifier, context.Request.Method, context.Request.Path, profiler.ElapsedMilliseconds, context.Response.StatusCode);
  15.             });
  16.         return applicationBuilder;
  17.     }
  18. }
复制代码
中间件配置

在 Startup 里配置请求处理管道,示例配置如下:


  1. app.UsePerformanceLog();

  2. app.UseAuthentication();
  3. app.UseMvc(routes =>
  4.     {
  5.       // ...
  6.     });
  7. // ...
复制代码
在日志里按 Logger 名称 “PerformanceLog” 搜索日志,日志里的 ElapsedMilliseconds 就是对应接口的耗时时间,也可以按 ElapsedMilliseconds 范围来搜索,比如筛选耗时时间大于 1s 的日志






上一篇:认识一下 Azure DevOps
下一篇:ID号生成 雪花算法
帖子永久地址: 

架构师_程序员 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与架构师_程序员享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和架构师_程序员的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、架构师_程序员管理员和版主有权不事先通知发贴者而删除本文

码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

Mail To:help@itsvse.com

QQ|Archiver|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2019-9-23 09:34

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表