文章出處
文章列表
首先我們要了解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); }
文章列表
全站熱搜