未処理の例外を WinForms アプリケーションのログ ファイルに記録して、例外の原因を簡単に特定するにはどうすればよいですか?
質問する
1445 次
3 に答える
4
まず、未処理の例外をキャッチする必要があります。このコードの 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# コードで申し訳ありません!)
于 2012-10-16T10:30:24.990 に答える
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
于 2012-10-16T11:00:21.307 に答える
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 を使用できます。
于 2012-10-16T11:38:29.163 に答える