问题是我们都面临的问题:
如何检查并查看我的操作/方法的记录方式?
当然,一种方法是使用秒表并在开始动作之前启动它并在完成后停止它:
...
logger.Debug("Starting action Blah Blah");
var sw = new StopWatch();
sw.Start();
..
//Doing the action
..
sw.Stop();
logger.Debug($"action Blah Blah spent {sw.Elapsed}");
右?
如果不在我的代码中添加日志记录逻辑,是不是有更简单的方法呢?
答案 0 :(得分:1)
我们使用的一种方法是向MVC应用程序添加自定义过滤器。
LogActionFilter
public class LogActionFilter : ActionFilterAttribute
{
private static NLog.Logger _logger = NLog.LogManager.GetCurrentClassLogger();
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
_logger.Trace("{0} Controller: {1}, Action: {2}",
MethodBase.GetCurrentMethod().Name,
filterContext.ActionDescriptor.ControllerDescriptor.ControllerName,
filterContext.ActionDescriptor.ActionName);
base.OnActionExecuting(filterContext);
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
_logger.Trace("{0} Controller: {1}, Action: {2}",
MethodBase.GetCurrentMethod().Name,
filterContext.ActionDescriptor.ControllerDescriptor.ControllerName,
filterContext.ActionDescriptor.ActionName));
base.OnActionExecuted(filterContext);
}
}
然后在FilterConfig
;
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new LogActionFilter());
}
}
上面的示例记录了时间,但您可以根据需要调整此时间以执行其他操作。