我是一个.NET/C#小白(长时间的servlet/Java开发人员)MVC记录:LogRequest] VS OnActionExecuting
我需要记录添加到我的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我所有的控制器。
在性能方面,哪个会更快?
此外,在性能方面,我正在考虑把实际测井方法调用的运行一次,死一个无阻塞线程。这种方法有什么陷阱?目标是让应用程序继续进行,而不是等待日志记录方法完成任务。
感谢您的信息。我明白你说的log4net正在优化,但它阻止了吗?或者你会推荐的日志过滤器只是运行异步? ...还有一个问题,我与log4net/j是缺乏自定义与字段保存到分贝。我想添加用户名,也许还有一些其他的东西到日志记录和查询它后来不必做一个“喜欢”的消息字段。 – horace
至于旋转异步记录,'什么也没有:[链接] http://www.singingeels.com/Articles/Logging_with_ASPNET_MVC_Action_Filters。aspx [/ link] – horace
我按照你的rec实现了这个,它非常好。增加了过滤器,它就像魔术一样工作! ---我确实喜欢这样一个事实,即我不必担心控制器是否具有与其相关的一些神奇属性以用于记录。简单。清洁。作品。 – horace