将未处理的异常记录到日志文件中

时间:2012-10-16 10:15:39

标签: vb.net winforms exception logging exception-handling

如何将未处理的异常记录到WinForms应用程序的日志文件中,以便很容易确定异常的来源?

3 个答案:

答案 0 :(得分:3)

首先,您需要捕获未处理的异常。将此代码的VB.Net版本添加到主程序中:

Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
Application.ThreadException += ApplicationThreadException;
AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionHandler;

然后添加事件处理程序:

static void UnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs e)
{
    Exception ex = e.ExceptionObject as Exception;
    if (ex != null)
    {
       Console.WriteLine("Unhandled exception: {0}", e.Exception);      
    }
}

static void ApplicationThreadException(object sender, ThreadExceptionEventArgs e)
{
    Console.WriteLine("Unhandled application exception: {0}", e.Exception);
}

然后您可以使用所选的日志方法记录错误..(对不起C#代码!)

答案 1 :(得分:2)

在您的Sub Main或您的启动表单的构造函数中,添加以下代码:

AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf UnhandledExceptionHandler

然后,将以下方法添加到Sub Main,或将其作为共享方法添加到任何其他类/表单中:

Public Sub UnhandledExceptionHandler(ByVal sender As Object, ByVal e As UnhandledExceptionEventArgs)
    If TypeOf e.ExceptionObject Is Exception Then
        Dim ex As Exception = CType(e.ExceptionObject, Exception)
        ' Log the exception
    End If
End Sub

答案 2 :(得分:1)

如果您想要记录某些内容,请使用Nlog - 它会将日志消息写入文件,电子邮件等。 链接: http://nlog-project.org/

文件: https://github.com/nlog/nlog/wiki/Tutorial

然后你可以这样做:

Private Logger As NLog.Logger = NLog.LogManager.GetCurrentClassLogger
try
'do stuff
catch
logger.fatal("Messagedescription")
end try

这会自动将您的消息写入nlog.config文件中指定的文件 要查看日志,您可以使用我喜欢的任何编辑器或logExpert。