我正在寻找比我们目前使用的更好的解决方案来处理意外的生产错误,而不需要重新发明轮子。
我们的许多产品都是WinForm和WPF应用程序,安装在远程站点。不可避免地会出现意外错误,从NullReferenceExceptions到“一般网络错误”。因此,从程序员错误到环境问题都有可能。
目前,所有这些未处理的异常都使用log4net进行记录,然后通过电子邮件发送给我们进行分析。然而,我们发现有时这些错误“报告”包含的信息太少,无法识别问题。
在这些报告中,我们需要的信息包括:
我们的许多产品都是WinForm和WPF应用程序,安装在远程站点。不可避免地会出现意外错误,从NullReferenceExceptions到“一般网络错误”。因此,从程序员错误到环境问题都有可能。
目前,所有这些未处理的异常都使用log4net进行记录,然后通过电子邮件发送给我们进行分析。然而,我们发现有时这些错误“报告”包含的信息太少,无法识别问题。
在这些报告中,我们需要的信息包括:
- 应用程序名称
- 应用程序版本
- 工作站
- 可能是屏幕截图
- 异常详细信息
- 操作系统
- 可用RAM
- 运行进程
- 等等...
- 错误收集(详见上文)
- 发送者错误(如果数据库或互联网不可用,则需要排队)
- 错误数据库
- 分析和报告这些错误。例如:在下午4:00至5:00之间,最常见的10个错误或超时是什么?版本x和y之间的错误有何区别?
注意: 我们曾考虑SmartAssembly作为可能的解决方案,但虽然接近但并未完全满足我们的需求,我希望听听其他开发人员做了什么以及是否存在一些替代方案。
编辑:谢谢迄今为止的答案。也许我在最初的问题中没有表达清楚,问题不在于如何捕获所有未处理的异常,而在于如何处理它们并创建一个报告引擎(分析)。