zoukankan      html  css  js  c++  java
  • MVC拦截器之Action拦截器 记录执行时间及日志

    /// <summary>
        /// action拦截器
        /// </summary>
        public class ActionFillters : IActionFilter
        {
            private static readonly Logger _log = LogManager.GetCurrentClassLogger();
            private const string _stopWatchKey = "_stopWatchKey";
    
            /// <summary>
            /// 执行action前执行这个方法
            /// </summary>
            /// <param name="context"></param>
            public void OnActionExecuting(ActionExecutingContext context)
            {
                //定义计时器
                var stopWatch = new Stopwatch();
                context.HttpContext.Items[_stopWatchKey] = stopWatch;
                stopWatch.Start();
                
                //记录日志
                string msg = "执行Action前:" + "请求地址:" + context.HttpContext.Request.Path;
                _log.Info(msg);
            }
            /// <summary>
            /// 执行action后执行这个方法 
            /// </summary>
            /// <param name="context"></param>
            public void OnActionExecuted(ActionExecutedContext context)
            {
                var stopWatch = context.HttpContext.Items[_stopWatchKey] as Stopwatch;
                if (stopWatch != null)
                {
                    stopWatch.Stop();
                    string msg = "执行Action后:" + "请求地址:" + context.HttpContext.Request.Path + " 耗时:" + stopWatch.ElapsedMilliseconds + "毫秒”;
                    _log.Info(msg);
                }
                else
                {
                    string msg = "执行Action后:" + "请求地址:" + context.HttpContext.Request.Path;
                    _log.Info(msg);
                }
            }
        }
    重点:拦截器、HttpContext.Items
  • 相关阅读:
    [转]Spring的IOC原理[通俗解释一下]
    自我介绍
    什么是存储过程
    Linux 之 最常用的20条命令
    [转]sql语句中出现笛卡尔乘积 SQL查询入门篇
    mysql 多表连接
    正则表达式
    postman 测试API
    [转]mysql 视图
    数据库 修改统一显示时间
  • 原文地址:https://www.cnblogs.com/jianghaidong/p/12604809.html
Copyright © 2011-2022 走看看