Windows,Firefox或Google Chrome都会监控使用情况统计信息并分析崩溃报告是否会发送给他们。我正在考虑在我的应用程序中实现相同的功能。
当然,使用大量日志记录声明很容易乱丢应用程序,但这是我想要避免的方法,因为我不希望我的代码在函数中有太多的交叉问题。我正在考虑使用AOP来做到这一点,但在此之前我想知道其他人如何首先实现此功能。
有人有任何建议吗?
澄清:我正在开发桌面应用程序,并且不涉及任何RDBMS
答案 0 :(得分:1)
在“调试.Net 2.0应用程序”中,John Robbins(Wintellect)撰写了大量关于如何生成和调试崩溃报告(实际的windbg / SOS迷你转储)的文章。他的Superassert类包含生成这些的代码。但要注意 - 正确设置它需要付出很多努力:符号服务器,源服务器以及对VS2005和windbg的良好了解。然而,他的书指导你完成整个过程。
关于使用情况统计,我经常将其与授权联系起来,即让用户有权执行特定任务。过分简单地说这可能是这样的方法(ApplicationActions是一个枚举):
public static bool HasPermission( ApplicationActions action )
{
// Validate user has permission.
// Log request and result.
}
可以将此方法添加到单个SercurityService类中。正如我所说,这过于简单,但应该表明我所考虑的那种服务。
答案 1 :(得分:1)
乔尔有一篇关于此类内容的博客文章 - 他的应用程序陷阱崩溃,然后用一些细节联系他的服务器。我认为他会检查重复项并将其抛出。这是一个很棒的系统,当我阅读它时给我留下了深刻的印象。
http://www.fogcreek.com/FogBugz/docs/30/UsingFogBUGZtoGetCrashRep.html
我们在我所在的地方设置了公共服务器以接收数据。我不是一个数据库人,没有我在公共互联网上控制的服务器。遗憾的是,我的个人项目还没有这个很棒的功能。
答案 2 :(得分:0)
我会快速浏览一下属于企业库的Logging Application Block。它提供了大量您需要的东西,并且维护得很好。查看一些可用的场景和示例,我想您会根据自己的喜好找到它们。