框架集成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左上角(位置可以配置)
本文分享自 NetCore 从壹开始 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!