C#.Net Mvc運營監控,計算方法/接口/action/頁面執行時間


標簽:

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.itdos.com/Mvc/20150324/0126300.html 轉載請保留此鏈接,謝謝!

C#.Net Mvc運營監控,計算方法/接口/action/頁面執行時間

標簽:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM