使用log4Net或企业库进行事件记录

时间:2018-07-29 10:54:05

标签: .net events logging

我有一个旧版MVC应用程序。我不想打扰所有动作方法,但想记录用户活动,一系列调用的方法以及传递的输入参数值,以及在此过程中是否有任何例外情况。我可以使用.net反射或任何mvc过滤器进行最小的更改吗?

1 个答案:

答案 0 :(得分:2)

您可以使用ActionFilterAttribute(https://docs.microsoft.com/fr-fr/aspnet/mvc/overview/older-versions-1/controllers-and-routing/understanding-action-filters-cs

如果您使用的是.NET Core:

public class UserActivityFilter : ActionFilterAttribute
{
    public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutingDelegate next)
    {
        await next();
        // here get your logger service (example )
        var logger = context.HttpConcet.RequestServices.GetService(typeof(ILogger)) as ILogDataOperations;
        await logger.LogUserActivity(context.HttpContext.User.Name, context.HttpContext.Request.Path);
    }

}

然后戴上您的控制器:

[Authorize]
[UserActivityFilter]
public class BaseController : Controller
{
...
}