如何將未處理的異常記錄到WinForms應用程序的日誌文件中,以便很容易地確定異常的來源?將未處理的異常記錄到日誌文件
2
A
回答
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#代碼)
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
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。
相關問題
- 1. Sitecore異常處理和日誌記錄
- 2. ASP.NET異常處理/日誌記錄
- 3. 針對Windows窗體的未處理的異常日誌記錄
- 4. 如何禁用ELMAH未處理的異常日誌記錄?
- 5. Django日誌記錄 - 未找到處理程序的日誌文件
- 6. WriteToEventLog日誌記錄異常的sql aspnet_db日誌文件
- 7. SignalR異常日誌記錄?
- 8. Log4Net日誌記錄異常
- 9. Python日誌記錄異常
- 10. 記錄未處理的異常
- 11. 異常處理和日誌記錄:更好的做法
- 12. 處理來自$ window.localstorage的異常日誌記錄
- 13. 處理由日誌記錄造成的異常
- 14. 使用企業庫的異常處理日誌記錄
- 15. 如何在使用Log4j2異步日誌記錄時處理日誌記錄中的異常?
- 16. C#未處理的異常處理程序,試圖寫入日誌文件
- 17. c#windows-services - 如何處理日誌記錄異常?
- 18. 春季異常處理程序日誌記錄不工作
- 19. 如何在日誌記錄中處理異常?
- 20. ASP.Net MVC異常日誌記錄與錯誤處理
- 21. IIS PHP不會將日誌文件記錄到日誌文件
- 22. 事件日誌有錯誤。 「發生了未處理的異常」
- 23. 處理文件未找到異常?
- 24. 異常處理(或記錄)
- 25. 批處理文件 - 格式日誌記錄的日期/時間
- 26. AWS CloudWatch記錄已處理和未處理異常的指標
- 27. PowerShell中的異常日誌記錄
- 28. 當ASP.NET處理未處理的異常時,事件日誌消息被展開
- 29. 啓用未處理的異常的事件記錄在ASP.NET
- 30. Mongodb日誌記錄 - 文件非常大
如果我使用try catch @表單級別,那麼我必須在catch塊中編寫代碼才能執行上面的代碼? – andy
如果您使用try/catch,只需將日誌記錄代碼添加到catch代碼塊中即可獲取**未處理的**異常,即那些未在try/catch塊中捕獲的異常。 – stuartd