Windows、Firefox 或 Google Chrome 都监控使用统计数据并分析发送给它们的崩溃报告。我正在考虑在我的应用程序中实现相同的功能。
当然,在应用程序中添加大量日志语句很容易,但这是我想要避免的方法,因为我不希望我的代码在函数中有太多的横切关注点。我正在考虑使用 AOP 来做这件事,但在此之前我想知道其他人是如何首先实现这个功能的。
有人有什么建议吗?
澄清:我正在开发桌面应用程序,不涉及任何 RDBMS
Windows、Firefox 或 Google Chrome 都监控使用统计数据并分析发送给它们的崩溃报告。我正在考虑在我的应用程序中实现相同的功能。
当然,在应用程序中添加大量日志语句很容易,但这是我想要避免的方法,因为我不希望我的代码在函数中有太多的横切关注点。我正在考虑使用 AOP 来做这件事,但在此之前我想知道其他人是如何首先实现这个功能的。
有人有什么建议吗?
澄清:我正在开发桌面应用程序,不涉及任何 RDBMS
Joel 有一篇关于此类的博客文章 - 他的应用程序陷阱崩溃,然后联系他的服务器并提供一些详细信息。我认为他会检查重复项并将它们扔掉。这是一个很棒的系统,当我阅读它时给我留下了深刻的印象。
http://www.fogcreek.com/FogBugz/docs/30/UsingFogBUGZtoGetCrashRep.html
我们在我所在的一个地方做了这个,那里有一个公共服务器来接收数据。我不是数据库专家,也没有我在公共互联网上控制的服务器。不幸的是,我的个人项目还没有这个很棒的功能。
在“调试 .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 类中。正如我所说,这过于简单,但应该表明我所考虑的服务类型。
我将快速浏览一下作为企业库一部分的日志记录应用程序块。它提供了大量您需要的东西,并且维护得很好。查看一些可用的场景和示例,我想你会找到你喜欢的。