码迷,mamicode.com
首页 > Web开发 > 详细

Asp.net MVC通过自定义特性实现Action日志记录

时间:2017-11-08 13:26:28      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:cti   reg   ext   sea   start   []   logs   override   ==   

一、自定义特性

/// <summary>
    /// 描述特性
    /// </summary>
    [AttributeUsage(AttributeTargets.Method)]
    public sealed class DescribeAttribute : Attribute
    {
        private string _funDescribe;

        public DescribeAttribute() { }

        public DescribeAttribute(string funDescribe)
        {
            this._funDescribe = funDescribe;
        }

        public string FunDescribe
        {
            get { return _funDescribe; }
        }
    }

二、在Action上面加入特性

[Describe("系统主页面")]
        public ActionResult Index()
        {
            return View();
        }

三、继承ActionFilterAttribute实现LogFilter日志

public sealed class LogFilter : ActionFilterAttribute
    {
        public override void OnActionExecuted(ActionExecutedContext filterContext)
        {
            if (filterContext == null)
            {
                throw new ArgumentNullException(nameof(filterContext));
            }

            object[] attrs = filterContext.ActionDescriptor.GetCustomAttributes(typeof(DescribeAttribute), false);
            if (attrs.Length > 0)
            {
                string funDescribe = ((DescribeAttribute)attrs[0]).FunDescribe;
            }
            base.OnActionExecuted(filterContext);
        }
    }

四、在App_Start文件夹下面加入全局日志过滤器

public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new AuthorizeAttribute());
            filters.Add(new HandleErrorAttribute());
            filters.Add(new LogFilter());
        }
    }

 

Asp.net MVC通过自定义特性实现Action日志记录

标签:cti   reg   ext   sea   start   []   logs   override   ==   

原文地址:http://www.cnblogs.com/tangchun/p/7803253.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!