8

实现简单的崩溃/错误报告机制的最佳方法是什么?

详细信息:我的应用程序是跨平台的(mac/windows/linux)并用 Python 编写,所以我只需要一些可以向我发送少量文本的东西,例如只是一个时间戳和一个回溯(我已经生成并显示在我的错误对话框)。

如果它可以简单地通过电子邮件发送它会很好,但我想不出一种方法来做到这一点,而不在应用程序中包含 smtp 服务器的用户名和密码......我是否应该在服务器端实现一个简单的 Web 服务并让我的应用程序向它发送带有信息的 HTTP 请求?有更好的想法吗?

4

6 回答 6

5

Web 服务是最好的方法,但有一些注意事项:

  1. 您应该始终询问用户是否可以发送错误反馈信息。
  2. 如果出现网络错误,您应该准备好优雅地失败。不要让未能报告崩溃阻碍恢复!
  3. 除非用户知道(参见 #1),否则您应该避免包含用户识别信息或敏感信息,并且您应该使用 SSL 或以其他方式保护它。某些司法管辖区给您带来了您可能不想处理的负担,因此最好不要保存此类信息。
  4. 像任何网络服务一样,确保您的服务不会被不法分子利用。
于 2008-09-17T18:16:02.343 回答
3

如果不在应用程序中包含 smtp 服务器的用户名和密码,我想不出办法来做到这一点......

您只需要用户名和密码即可向智能主机验证您自己的身份。您不需要它直接发送邮件,您需要它通过中继发送邮件,例如您的 ISP 的邮件服务器。完全有可能在没有身份验证的情况下发送电子邮件 - 这就是垃圾邮件如此难以阻止的原因。

话虽如此,一些 ISP 会阻止端口 25 上的出站流量,因此最强大的替代方案是 HTTP POST,它不太可能被任何东西阻止。请务必选择一个您以后不会感到受限制的 URL,或者更好的是,让应用程序定期检查更新,因此如果您决定更改域或其他内容,您可以提前推送更新。

安全并不是真正的问题。您可以相当容易地丢弃垃圾数据,因此您真正关心的是是否有人会不厌其烦地构建虚假的回溯来干扰您,这是一种非常不可能的情况。

至于有效载荷,PyCrash可以帮助您。

于 2008-09-17T18:30:25.320 回答
1

网络热门是要走的路,但请确保您选择了一个好的 URL - 您的应用程序将在未来几年内点击它。

于 2008-09-17T18:11:53.150 回答
1

PyCrash

于 2008-09-17T18:12:08.920 回答
0

无论您使用 SMTP 还是 HTTP 发送数据,您都需要在应用程序中设置用户名/密码,以防止任何人向您发送随机数据。

考虑到这一点,我怀疑使用 SMTP 而不是 HTTP 来发送数据会更容易。

于 2008-09-17T18:13:09.807 回答
0

某种简单的网络服务就足够了。您必须考虑安全性,因此不仅仅是任何人都可以向您的服务提出请求..

在更大的范围内,我们考虑了 JMS 消息传递系统。将包含回溯/错误消息的数据序列化对象放入队列中,每 x 分钟使用一次,从该数据生成报告/警报。

于 2008-09-17T18:17:52.870 回答