我是 .net/c# noob(长期 servlet/java 开发人员)
我需要将日志记录添加到我的 mvc 应用程序。我希望它在性能方面相当便宜,并且易于配置。
我最初想做的是记录每个传入的控制器操作。我突然想到可能有一个单点入口,所以我不必在每个控制器的操作方法中添加一行代码。
我看到它的方式,我可以添加一个 [LogRequest] 属性到控制器(在我的例子中,一个基本控制器),然后实现一个
public class LogsRequestsAttribute : ActionFilterAttribute, IActionFilter
{
void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
{ ... }
}
类来处理 logrequest 属性。
或者
我可以按照以下方式覆盖基本控制器:
public class BaseController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
// perform some action here
}
}
并从 BaseController 继承我所有的控制器。
在性能方面,哪个更快?
另外,在性能方面,我正在考虑将实际的日志记录方法调用放在一个运行一次并死掉的非阻塞线程中。这种方法有什么陷阱吗?目标是让应用程序继续运行,而不是等待记录方法完成它的任务。