我有一个WinForms应用程序,我需要记录所有异常(到文件,到web服务,无论),处理和未处理。我怎样才能做到这一点?应用程序日志
应用程序日志
回答
我还没有使用它,但Exceptioneer是高度重视...
在.NET世界上最常用的日志框架是log4net的。
但是也有一些需要log4net的在应用程序中集成两个步骤:
- 配置log4.net。例如,在log4net Config Examples页面上检出FileAppender。
- 准备你的类使用log4net的:
每个类应包含用于记录的字段:
private static ILog _logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
现在,每当你将不得不处理异常,你会做以下:
try
{
// Do stuff here
}
catch (Exception ex)
{
_logger.Error("Operation failed.", ex);
}
这样你只解决了问题的一半:处理的异常。
为了捕获所有未处理的异常在Windows窗体应用程序,你必须处理由.NET Framework提供2个事件:
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
Application.ThreadException += Application_ThreadException;
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
_logger.Error("Unhandled exception.", (Exception)e.ExceptionObject);
}
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
_logger.Error("Unhandled application exception.", e.Exception);
}
这all.Nice和容易!
当您开始将应用程序交付给一个或多个客户时,情况变得复杂。这是因为您需要请您的客户为您提供日志文件以检查应用程序是否遇到任何问题。
因此,必须要解决两个问题:
- 如何当一些错误发生在您的应用程序得到通知?
- 如何获取有关异常,环境等的详细信息?
一种解决这两个问题是使用专用的服务,集中在一个单一的地方所有的异常,并通知您时,您的应用程序遇到任何异常。
有几种服务试图解决所有这些问题,其中之一是ExceptionTail。
ExceptionTail的一个非常不错的功能是它可以通过custom log4net appender与使用log4.net的现有应用程序无缝集成。
这意味着您无需重新编译整个应用程序即可使用该服务。只需在应用程序的文件夹中放入一些dll文件,在应用程序配置文件中添加一些东西,就可以开始使用了。
这是一个很好的答案,我也建议使用Log4Net,但我会用自定义Logging类将调用包装到ILog对象中,以防万一以后日志引擎改变时,一个地方要更新,所有使用包装类的类都可以。 – 2011-07-03 12:31:59
- 1. 发送应用程序崩溃日志/常规应用程序日志
- 2. 将应用程序日志重定向到docker日志
- 3. 在jenkins控制台日志上显示应用程序日志
- 4. Windows Azure日志记录:WADLogsTable作为应用程序日志?
- 5. 将应用程序日志转发到Windows事件日志
- 6. Django + heroku:django日志出现,应用程序日志不
- 7. Azure日志与应用程序网关诊断日志集成
- 8. 日志记录应用程序块
- 9. Java应用程序的日志框架
- 10. Glassfish3中的应用程序日志
- 11. 应用程序崩溃! (附上日志)
- 12. Xamarin IOS应用程序崩溃日志
- 13. Java应用程序+日志记录
- 14. Log4j分组应用程序日志
- 15. 查看coldfusion日志的应用程序
- 16. web2py应用程序日志记录
- 17. 应用程序洞察日志分析
- 18. 。应用程序日志记录
- 19. 应用程序服务器日志
- 20. PHP应用程序日志存储
- 21. ASP.NET应用程序的日志框架
- 22. 从Android获取应用程序日志
- 23. 生成应用程序运行日志?
- 24. iPhone应用程序崩溃日志
- 25. 应用程序日志堆栈
- 26. AzureWebApp:监视器应用程序日志
- 27. 应用程序的事件日志
- 28. Log4Net或日志应用程序块
- 29. Hadoop的应用程序日志大小
- 30. Log4J日志消息正在记录到应用程序日志和stdout for grails应用程序
异常者看起来不错:) – SubniC 2011-02-15 12:59:34