5

Windows、Firefox 或 Google Chrome 都监控使用统计数据并分析发送给它们的崩溃报告。我正在考虑在我的应用程序中实现相同的功能。

当然,在应用程序中添加大量日志语句很容易,但这是我想要避免的方法,因为我不希望我的代码在函数中有太多的横切关注点。我正在考虑使用 AOP 来做这件事,但在此之前我想知道其他人是如何首先实现这个功能的。

有人有什么建议吗?

澄清:我正在开发桌面应用程序,不涉及任何 RDBMS

4

3 回答 3

1

Joel 有一篇关于此类的博客文章 - 他的应用程序陷阱崩溃,然后联系他的服务器并提供一些详细信息。我认为他会检查重复项并将它们扔掉。这是一个很棒的系统,当我阅读它时给我留下了深刻的印象。

http://www.fogcreek.com/FogBugz/docs/30/UsingFogBUGZtoGetCrashRep.html

我们在我所在的一个地方做了这个,那里有一个公共服务器来接收数据。我不是数据库专家,也没有我在公共互联网上控制的服务器。不幸的是,我的个人项目还没有这个很棒的功能。

于 2008-12-17T22:40:13.060 回答
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 类中。正如我所说,这过于简单,但应该表明我所考虑的服务类型。

于 2008-12-17T09:18:55.940 回答
0

我将快速浏览一下作为企业库一部分的日志记录应用程序块。它提供了大量您需要的东西,并且维护得很好。查看一些可用的场景和示例,我想你会找到你喜欢的。

http://msdn.microsoft.com/en-us/library/cc309506.aspx

于 2008-12-17T22:34:53.570 回答