如何最好地实现简单的崩溃/错误报告?

时间:2008-09-17 18:09:33

标签: python cross-platform qa error-reporting

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

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

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

6 个答案:

答案 0 :(得分:5)

网络服务是最好的方式,但有一些警告:

  1. 您应该始终询问用户是否可以发送错误反馈信息。
  2. 如果出现网络错误,您应该准备好优雅地失败。不要让失败报告崩溃妨碍恢复!
  3. 除非用户知道(请参阅#1),否则您应该避免包含用户识别或敏感信息,并且您应该使用SSL或以其他方式保护它。某些司法管辖区对您施加了您可能不想处理的负担,因此最好不要保存此类信息。
  4. 与任何网络服务一样,请确保您的服务不被恶意攻击者利用。

答案 1 :(得分:3)

  

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

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

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

安全不是真正的问题。你可以相当容易地丢弃垃圾数据,所以真正让你担心的是,是否有人会为构建虚假的追溯而麻烦你,这是一种非常不可能的情况。

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

答案 2 :(得分:1)

网络热门是可行的方式,但请确保选择一个好的网址 - 您的应用将在未来几年内点击它。

答案 3 :(得分:1)

PyCrash

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

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

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