Asp.net mvc 使用NLog记录未处理的异常?ELMAH和NLog应该一起使用吗?

Asp.net mvc 使用NLog记录未处理的异常?ELMAH和NLog应该一起使用吗?,asp.net-mvc,asp.net-mvc-2,elmah,nlog,Asp.net Mvc,Asp.net Mvc 2,Elmah,Nlog,我在ASP.NETMVC项目中使用ELMAH,我非常喜欢它的简单性。但是我需要能够以log.Info(“message”)的方式在代码中记录某些事件。由于ELMAH没有提供这种能力,我开始研究NLog 我想到了几个问题: 是否同时使用ELMAH和NLog过量杀伤?对未处理的异常使用ELMAH,对其他所有异常使用NLog 是否可以将NLog配置为在NLog.config中记录未处理的异常,或者是否需要自定义代码 如果需要自定义代码,哪里是添加它的最佳位置?MVC框架中的OneException方法

我在ASP.NETMVC项目中使用ELMAH,我非常喜欢它的简单性。但是我需要能够以log.Info(“message”)的方式在代码中记录某些事件。由于ELMAH没有提供这种能力,我开始研究NLog

我想到了几个问题:

  • 是否同时使用ELMAH和NLog过量杀伤?对未处理的异常使用ELMAH,对其他所有异常使用NLog
  • 是否可以将NLog配置为在NLog.config中记录未处理的异常,或者是否需要自定义代码
  • 如果需要自定义代码,哪里是添加它的最佳位置?MVC框架中的OneException方法?global.asax文件

  • 非常感谢您的反馈。到目前为止,我还没有找到任何关于这个问题的好帖子?

    事实上,你可以触发ELMAH的警报。像这样:

     ErrorSignal.FromCurrentContext().Raise(new System.ApplicationException("An error occured in SendEmail()", ex));
    
    不要忘记添加对elmah.dll的引用,并使用elmah添加
    到该文件。
    
    有关更多示例,请参阅。

    在回答第2个问题时,我刚刚阅读了其中解释了如何使用NLog记录未处理的异常。基本上是在Global.asax.cs文件中添加如下内容:

    protected void Application_Error() 
    {
        Exception lastException = Server.GetLastError();
        NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
        logger.Fatal(lastException);
    }