在MVC 3应用程序中使用log4net捕获异常的位置?

时间:2013-03-11 15:26:37

标签: asp.net-mvc-3 logging exception-handling log4net

我将以下代码放在全局文件中以捕获我的mvc应用程序中的异常:

 void Application_Error(Object sender, EventArgs e)
        {
            Exception ex = Server.GetLastError().GetBaseException();
            log.Error("Exception", ex);
        }

以及以下内容以跟踪调用的控制器:

public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if (log.IsDebugEnabled)
            {
                var loggingWatch = Stopwatch.StartNew();
                filterContext.HttpContext.Items.Add(StopwatchKey, loggingWatch);

                var message = new StringBuilder();
                message.Append(string.Format("Executing controller: {0}, action: {1}",
                    filterContext.ActionDescriptor.ControllerDescriptor.ControllerName,
                    filterContext.ActionDescriptor.ActionName));

                log.Debug(message);
            }
        }

我能做些什么来捕获涉及db,安全性(如无法连接到ldap),数据问题/转换等的错误。?

1 个答案:

答案 0 :(得分:1)

可以将第二个代码段添加到全局操作过滤器(在global.asax中注册)。可以将第一个代码段添加到单独的IHttpModule实现中,以将其从global.asax中删除。

除此之外,您已将代码添加到将捕获所有异常的两个位置。将针对所有非MVC相关异常调用第一个异常,而后者仅针对MVC异常(排除路由)