文章出處

首先我們要了解MVC提供了4種常用的攔截器:IActionFilter(Action攔截器接口)、IExceptionFilter(異常攔截器接口)、IResultFilter(Result攔截器接口)、IAuthorizationFilter(授權攔截器接口)

1.建一張保存操作日志的表

create table system_log
(
	Id char(32) primary key,
	UserId char(32) not null comment '用戶Id',
	UserName varchar(50) not null comment '用戶名稱',
	Tkey varchar(20) not null comment '關鍵字',
	Description varchar(100) not null comment '操作描述',
	OperateResult int default 0 not null comment '操作結果.0,失敗;1,成功;',
	DateTime datetime not null comment '操作時間'
) comment '系統日志';

 2.實現IActionFilter接口(Action攔截器接口),這里定義了2個參數Key和Description,分別表示操作的關鍵字和描述,方便分類查詢和展示

    /// <summary>
    /// 操作日志攔截器
    /// </summary>
    public class LoggerFilter : FilterAttribute, IActionFilter
    {
        /// <summary>
        /// 日志關鍵字
        /// </summary>
        public string Key { get; set; }

        /// <summary>
        /// 日志描述
        /// </summary>
        public string Description { get; set; }

        /// <summary>
        /// Action執行后
        /// </summary>
        void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext)
        {
            var result = ((System.Web.Mvc.JsonResult)filterContext.Result).Data.ToString();

            var logService = new Service.SystemLogService();

            var model = new Data.DomainModels.SystemLog()
            {
                UserId = "管理員Id",
                UserName = "管理員名稱",
                Tkey = Key,
                Description = Description,
                OperateResult = result.Contains("True") ? 1 : 0,
            };

            logService.Save(model);
        }

        /// <summary>
        /// Action執行前
        /// </summary>
        void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
        {

        }
    }

 3.使用日志攔截器,在需要記錄操作日志的Action上加上攔截器屬性就OK了,麻煩的是需要給每個Action定義Key和Description

        /// <summary>
        /// 日志攔截器測試
        /// </summary>
        [LoggerFilter(Key = "key", Description = "做了哪些事情")]
        public ActionResult DoSomething(string param)
        {
            //具體業務邏輯

            return JRCommonHandleResult(true);
        }

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()