通用權限管理平台利用過濾器實現自動記錄系統日志功能。
首先需要自定義日志過濾器屬性LogRequestAttribute,並且繼承ActionFilterAttribute,IActionFilter
在日志過濾器屬性類中實現基類IActionFilter的方法OnActionExecuting
void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
{
try
{
TLogDo log = new TLogDo();
log.LogGuid = System.Guid.NewGuid().ToString();
TUserDo user=DataAccess.FindById<TUserDo>(filterContext.HttpContext.User.Identity.Name);
log.UserName = user == null ? "" : user.LoginId;
log.Operation = OperationDescription;
log.OpDate = System.DateTime.Now;
log.Url = filterContext.HttpContext.Request.Url.ToString();
log.IpAddress = filterContext.ActionParameters["IPAdress"] == null ? "" : filterContext.ActionParameters["IPAdress"].ToString(); //filterContext.HttpContext.Request.UserHostAddress;
DataAccess.Add<TLogDo>(log);
}
catch
{
}
finally
{
}
}
另外,為了記錄模塊操作中文描述需要在此類中增加一個自定義屬性OperationDescription操作描述,這樣的話就可以達到記錄不同模塊不同操作。
這樣的話,自動日志記錄功能已經實現,接下來需要做的是,對需要日志記錄的Controller增加日志屬性,完成與日志的綁定。
[LogRequest(OperationDescription = "登錄")]
public ActionResult LogOn()
{
return View();
}
這樣增加LogRequest屬性即可實現Action的日志功能。
演示地址:http://hnjgsoft.xicp.net/ 賬號:admin 密碼:888888
如發現地址無法訪問,請與本人聯系,QQ:42934067