在应用程序中编写诊断类是很常见的

时间:2013-12-12 10:02:56

标签: c# java debugging logging

在应用程序中编写Diagnostics类是否常见? - 这不只是转储堆栈跟踪?如果是的话,需要做些什么呢?

我正在考虑用{/ 1>编写Diagnostics

  • 我的应用程序中每个更容易出错的类都有多个重载的diagnose(Class thisInstance, Exception ex)
  • analyzeEnvironmentVariables()
  • analyzeAppSettings()
  • analyzeServers()
  • diagnodeAll():将创建所有类的实例,并查看它们是否已正确初始化

我会在diagnose()中致电catch()

catch(Exception ex)
{
    Diagnostics.diagnose(this,ex);
}

diagnose()的每一个中,我都在考虑

  • 转储堆栈跟踪
  • 转储并分析此实体的成员
  • 致电analyzeEnvironmentVariables();
  • 致电analyzeAppSettings();
  • 致电analyzeServers();
  • 致电diagnoseAll();
  • 看看事情是否可以修复
  • 尝试重启应用程序三次,如果它一直失败就会停止
  • 最后会回应诊断结果

这是否正常完成?我知道如果这个类不能基于对各种参数的分析来实际诊断事物,那么整个类可能会减少到某种程度上扩展的日志记录功能。但是仍然想再考虑一下,并想知道通常做什么。

1 个答案:

答案 0 :(得分:0)

这不是一个坏主意 - 通常在异常时的行为大多数情况下至少在其致命的时候是相似的,因此重构因此只有一个实现是一个好的举动。

考虑到这样做时不要过于依赖其他类 - 你不想把你的整个系统绑定在依赖关系中。还要考虑如果Diagnostics类本身抛出异常会发生什么。你不想以意想不到的方式压制和爆炸。