2015-07-13 53 views
1

我们有一个MVC应用程序,将由用户生成的错误记录回我们的支持数据库的最佳方法是什么?用户应该只看到“这个错误已经被报道的”错误消息MVC 5 c#将错误报告回数据库

所有的细节应该被写入到数据库

请帮助!

+0

会发生什么,如果有连接到支持数据库的错误? tbh记录错误的最佳位置是应用程序服务器上的文本文件。 – user1666620

+2

利用记录器...就像log4net将登录到您的数据库 –

+0

@ user1666620小心声称“最佳”的做法。你会发现不同的意见(特别是当日志文件填满文件系统时)。 – Richard

回答

1

我建议你要么使用Log4Net这样的外部库,要么创建你自己的库类来为你做日志。

还有一个建议是利用在MVC文件中可用的ExceptionFilter并写入该过滤器的日志记录代码。我建议,因为它不会导致你一次又一次地写代码,它遵循DRY原则。

例子:

public class CustomExceptionFilter: FilterAttribute, 
IExceptionFilter 
{ 
    public void OnException(ExceptionContext filterContext) 
    { 
     if (!filterContext.ExceptionHandled) 
     { 
      //log error here 
      Logger.LogException(filterContext.Exception); 
      //this will redirect to error page and show use logging is done 
      filterContext.Result = new 
         RedirectResult("customErrorPage.html"); 
      filterContext.ExceptionHandled = true; 
     } 
    } 
} 

比你可以像这样

//Over controller 
[CustomExceptionFilter] 
public class HomeController:Controller 
{ 
    //...... 
} 


//Over the Action 
[CustomExceptionFilter] 
public ActionResult Index() 
{ 
    //....... 
} 

检查本作的log4net:log4net Tutorial

+0

你能指点我一些例子请 – LeBlues

+0

@LeBlues - 检查更新这将帮助你 –

+0

@LeBlues - 是你的工作...... –