2015-09-25 58 views

回答

6

您可以创建自己的继承自ActionFilterAttribute的类,然后覆盖OnActionExecuting方法。

public class LogActionAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 

     var controller = filterContext.RequestContext.RouteData.Values["Controller"]; 
     var action = filterContext.RequestContext.RouteData.Values["Action"]; 

     // 
     // Perform logging here 
     // 

     base.OnActionExecuting(filterContext); 
    } 
} 

public class HomeController : Controller 
{ 
    [LogActionAttribute] 
    public ActionResult Index() 
    { 

     return View(); 
    } 

} 

希望这有助于!

+0

不错THOROUGH答案;) – Eminem

0

您可以尝试使用Audit.NET库,其Audit.MVC和不同的数据提供程序将日志存储在文件,事件日志,sql,redis,mongo等等。

随着MVC扩展你只需要一个属性来装饰你的控制器或动作:

[Audit] 
public class HomeController : Controller 
{ ... } 

执行静态配置来设置日志的输出:

Audit.Core.Configuration.Setup() 
    .UseFileLogProvider(_ => _ 
     .Directory(@"C:\Logs")); 

,它会提供基础结构来记录与MVC应用程序的交互。