我刚开始使用ELMAH,并且是粉丝。我的团队支持大量的Web应用程序,令我特别激动的是ELMAH使我们能够将每个应用程序中的异常保存到同一MS SQL数据库表中。

我们还支持一些控制台,DLL和桌面应用程序。是否可以使用ELMAH DLL将这些应用程序中的异常记录到同一位置?

最佳答案

我们这里的情况完全一样。针对我们所有的Web应用程序运行ELMAH。其中一些具有基于控制台的调度程序。

在仔细研究了源代码之后,以下代码似乎可以工作:

            ErrorLog errorLog = ErrorLog.GetDefault(null);
            errorLog.ApplicationName = "/LM/W3SVC/1/ROOT/AppName";
            errorLog.Log(new Error(ex));

上面的唯一真正的问题是,您需要将应用程序名称保留在配置中的某个位置,以便能够查看ELMAH.axd查看器上的条目。

因此,在我们的通用错误处理代码中,我们这样做:
        if (HttpContext.Current != null)
            ErrorSignal.FromCurrentContext().Raise(ex);
        else
        {
            ErrorLog errorLog = ErrorLog.GetDefault(null);
            errorLog.ApplicationName = ErrorHandling.Application;
            errorLog.Log(new Error(ex));
        }

关于.net - 在控制台应用程序中使用ELMAH,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/841451/

10-11 06:33