小智 8
.NET世界中最常用的日志框架是log4net.
将log4net集成到您的应用程序中需要两个步骤:
每个类应包含用于记录的字段:
private static ILog _logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
Run Code Online (Sandbox Code Playgroud)
现在,每当您必须处理异常时,您将执行以下操作:
try
{
// Do stuff here
}
catch (Exception ex)
{
_logger.Error("Operation failed.", ex);
}
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您只解决了问题的一半:处理异常.
为了捕获Windows窗体应用程序中的所有未处理的异常,您必须处理.NET框架提供的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);
}
Run Code Online (Sandbox Code Playgroud)
这就是全部.很容易!
当您开始将应用程序交付给一个或多个客户时,事情会变得复杂.这是因为您需要让客户向您提供日志文件,以检查应用程序是否遇到任何问题.
因此,您必须解决两个问题:
这两个问题的解决方案是使用专用服务,将所有异常集中在一个地方,并在应用程序遇到任何异常时通知您.
有几种服务试图解决所有这些问题,其中之一就是ExceptionTail.
ExceptionTail的一个非常好的功能是它与通过自定义log4net appender使用log4.net的现有应用程序无缝集成.
这意味着您无需重新编译整个应用程序即可使用该服务.只需在应用程序的文件夹中删除一些dll,在应用程序配置文件中添加一些内容,就可以了.
| 归档时间: |
|
| 查看次数: |
1593 次 |
| 最近记录: |