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
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对站长技术的支持。
1.心烦意乱或者无聊闲着的时候,多到图书馆去泡泡,书中有现实中难得的纯明和清...
尽管我们经常使用 VS Code中的许多快捷方式,但是我们有可能会忘记它们。 这里用...
1 Android屏幕适配相关概念 1.1 屏幕尺寸(Screen Size) 屏幕尺寸是屏幕的对角线...
文章目录 一. 前言 二. 什么是非对称加密算法 三. 双方交换信息工作流程 四.密钥...
复制代码 代码如下: Function GetTable(Table,Where,Order,OrderSort,curpage, p...
一、前言 一句话,git rebase 可以帮助项目中的提交历史干净整洁!!! 二、避免...
终端仿真器(或简称终端)是任何 Linux 发行版中不可或缺的一部分。 当你改变发...
3月11日消息 在 Build 2020 大会上,微软宣布了一个新项目 Project Reunion,让 ...
一般情况下,很少会用php去执行linux命令,不过特殊情况下,你也许会用到这些函...
原来是在系统上出了问题.是2003的IIS出现了问题,因为是2003的系统,它对ASP的上...