手机版

如何为ASP.NET芯写一个中间件记录接口需要时间

时间:2021-08-20 来源:互联网 编辑:宝哥软件园 浏览:

介绍

写接口的时候难免会遇到其他人说接口慢,慢多少,一个接口服务器处理需要多长时间,如果有具体的数字来记录每个接口需要多少时间,当别人说接口慢的时候,看看接口时间消耗的统计。如果在几毫秒内处理完,很抱歉我不会把这个锅背回去。

中间件实现

ASP.NET核心的操作是由中间件一个接一个的中间件完成的,所以我们只需要定义自己的中间件,并记录处理请求前后的时间。这里的中间件将请求的时间消耗输出到日志中,您也可以根据需要将其输出到响应头或其他地方。

公共静态类PerformanceLogExtension{公共静态IApplicationBuilder useperformance log(此IApplicationBuilder为application builder){ application builder。使用(async (context,next)={ var profiler=new StOpwatchprofiler();侧写。start();等待下一个();侧写。stop();var logger=上下文。request services . GetServiceILoggerFactory()。CreateLogger(' performance log ');伐木工。loginFOrmation(' TraceId : { TraceId },request method : { request method },RequestPath:{RequestPath},elapsedmirialsseconds 3360 { elapsedmirialsseconds },Response status code : { StatusCode } ',context。TraceIdentifier,上下文。请求。方法,上下文。请求。路径,分析器。ElapsedMilliseconds,上下文。response . status code);});返回applicationBuilder}}中间件配置

在启动中配置请求处理管道。示例配置如下:

app。useperformance log();app。UseAuthentication();app。UseMvc(routes={ //.});//.例子

按日志程序名称“性能日志”搜索日志。日志中的ElapsedMilliseconds是对应接口的耗时。您也可以按ElapsedMilliseconds范围进行搜索,例如过滤超过1s的日志。

备忘录

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

大规模应用可以使用更专业的APM工具。最近流行的天行道项目可以理解和支持。NET核心。详情请咨询https://github.com/SkyAPM/SkyAPM-dotnet :

参考

https://github.com/WeihanLi/ActivityReservation

摘要

以上就是本文的全部内容。希望本文的内容对大家的学习或工作有一定的参考价值。谢谢你的支持。

版权声明:如何为ASP.NET芯写一个中间件记录接口需要时间是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。