【BlogBook书】8、MiniProfiler:接口性能分析

科技   科技   2024-02-06 19:05   北京  

框架集成MiniProfiler+Swagger来做接口的简单性能分析,和每次请求中相关的Sql执行情况报告;

一、相关的依赖注入配置

// 服务注册builder.Services.AddMiniProfilerSetup();// 中间件app.UseMiniProfilerMiddleware();

相关参数设置

"Startup": {  "MiniProfiler": {    "Enabled": true //性能分析开启  },},


二、使用方式

目前框架中,已经做了一些封装,比如请求和Sql调用情况,所以开启后直接就能看到效果。

当时也可以自己在任意位置补充上自己想要输出的内容,比如在Controller中输出当前用户信息,或者是Service层中配置数据库连接信息等等,

用法就是:

可以分步输出每一步的数据内容

[HttpGet]public async Task<MessageModel<PageModel<BlogArticle>>> Get(int id, int page = 1, string bcategory = "技术博文", string key = ""){    // 一些逻辑...
using (MiniProfiler.Current.Step("获取成功后,开始处理最终数据")) { // 一些逻辑... }
return SuccessPage(pageModelBlog);}

也可以直接输出对应的时间线内容

MiniProfiler.Current.CustomTiming($"ConnId:[{config.ConfigId}] SQL:", GetParas(p) + "【SQL语句】:" + sql);


也可以在全局异常中处理,显示在swagger中

  public void OnException(ExceptionContext context)  {      var json = new MessageModel<string>();
json.msg = context.Exception.Message;//错误信息 json.status = 500;//500异常 var res = new ContentResult(); res.Content = JsonHelper.GetJSON<MessageModel<string>>(json);
context.Result = res;
MiniProfiler.Current.CustomTiming("Errors:", json.msg);

//进行错误日志记录 _loggerHelper.LogError(json.msg + WriteLog(json.msg, context.Exception)); if (AppSettings.app(new string[] { "Middleware", "SignalRSendLog", "Enabled" }).ObjToBool()) { _hubContext.Clients.All.SendAsync("ReceiveUpdate", LogLock.GetLogData()).Wait(); }

}


效果展示,在swagger中,点击某个接口请求,会在swagger左上角(位置可以配置)





BCVP代码创新社
专注于 NetCore 相关技术栈的推广,致力于前后端之间的完全分离,从壹开始,让每一个程序员都能从这里学有所成。
 最新文章