博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#.Net Mvc运营监控,计算方法/接口/action/页面执行时间
阅读量:6609 次
发布时间:2019-06-24

本文共 2201 字,大约阅读时间需要 7 分钟。

标签:

1、建立一个TimingActionFilter过滤器

技术分享

public class TimingActionFilter : ActionFilterAttribute    {        public override void OnActionExecuting(ActionExecutingContext filterContext)        {            GetTimer(filterContext, "action").Start();            base.OnActionExecuting(filterContext);        }        public override void OnActionExecuted(ActionExecutedContext filterContext)        {            GetTimer(filterContext, "action").Stop();            base.OnActionExecuted(filterContext);        }        public override void OnResultExecuted(ResultExecutedContext filterContext)        {            var renderTimer = GetTimer(filterContext, "render");            renderTimer.Stop();            var actionTimer = GetTimer(filterContext, "action");            if (actionTimer.ElapsedMilliseconds >= 100 || renderTimer.ElapsedMilliseconds >= 100)            {                LogHelper.WriteLog("运营监控(" + filterContext.RouteData.Values["controller"] + ")", String.Format(                        "【{0}】-【{1}】,执行:{2}ms,渲染:{3}ms",                        filterContext.RouteData.Values["controller"],                        filterContext.RouteData.Values["action"],                        actionTimer.ElapsedMilliseconds,                        renderTimer.ElapsedMilliseconds                    ));            }            base.OnResultExecuted(filterContext);        }        public override void OnResultExecuting(ResultExecutingContext filterContext)        {            GetTimer(filterContext, "render").Start();            base.OnResultExecuting(filterContext);        }        private Stopwatch GetTimer(ControllerContext context, string name)        {            string key = "__timer__" + name;            if (context.HttpContext.Items.Contains(key))            {                return (Stopwatch)context.HttpContext.Items[key];            }            var result = new Stopwatch();            context.HttpContext.Items[key] = result;            return result;        }    }

  其中LogHelper.WriteLog是我的写日志文件通用类,修改成你自己的即可。

3、给controller或action加上特性

技术分享

 

4、执行时间或渲染时间大于100ms会被记录下来

技术分享

技术分享

 

我这里有好几次执行时间7、800ms是因为每次重新生成项目,所以第一次会这么慢,这种不管它就是了:)

 

本文来自: 转载请保留此链接,谢谢!

标签:

原文地址:http://www.cnblogs.com/xinhuawei/p/5794357.html

你可能感兴趣的文章
下:比拼生态和未来,Spark和Flink哪家强?
查看>>
Android——Reflect反射——破除限制
查看>>
MySQL源码学习——DBUG调试
查看>>
django 快速入门
查看>>
项目跟了一年,客户最后说不做了
查看>>
Swashbuckle Swagger组件扩展
查看>>
python——高级特性
查看>>
SOTON私人定制:利用Python进行数据分析(前言、案例和IPython)
查看>>
如何用Python爬数据?(一)网页抓取
查看>>
Python3入门机器学习 - 数据可视化基础matplotlib
查看>>
MySQL Index Extensions
查看>>
Soul 1.0.5 发布,基于 WebFlux 的 Reactive 网关
查看>>
每次压力大到爆,驾校教练总爱跑敬老院干这件事
查看>>
[Spring实战系列](16)面向切面编程(AOP)概述
查看>>
ansible的模块理解<3>
查看>>
车联网上云最佳实践(二)
查看>>
roncoo-pay 开源支付系统全新架构升级
查看>>
python:pycharm:突然之间引用同一个目录下的其他模块不出现代码提示的问题解决方法...
查看>>
医药B2B平台药兜网获数千万元A1轮融资,中国最早一批获得A证企业之一
查看>>
Flutter学习总结系列----第一章、Flutter基础全面详解
查看>>