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

时间:2020-03-05 18:59:34  来源:igfitidea点击:

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

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

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

谢谢!

解决方案

回答

网络点击是解决之道,但请确保我们选择了一个不错的URL,应用将在未来几年内一直受到关注。

回答

PyCrash?

回答

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

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

回答

Web服务是最好的方法,但是有一些警告:

  • 我们应该始终询问用户是否可以发送错误反馈信息。
  • 如果存在网络错误,我们应该准备好正常地失败。不要让失败报告崩溃会阻止恢复!
  • 除非用户知道(请参阅#1),否则应避免包含用户标识或者敏感信息,并且应使用SSL或者以其他方式保护它。一些司法管辖区给我们增加了我们可能不想处理的负担,因此最好不要保存此类信息。
  • 与任何Web服务一样,请确保服务不可被恶意利用。

回答

某种简单的Web服务就足够了。我们将必须考虑安全性,以便不仅有人能向服务发出请求。

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

回答

I can't think of a way to do this without including a username and password for the smtp server in the application...

我们只需要用户名和密码即可向智能主机进行身份验证。我们不需要它直接发送邮件,而需要它通过中继发送邮件,例如ISP的邮件服务器。无需身份验证就可以发送电子邮件,这就是为什么垃圾邮件很难阻止的原因。

话虽如此,一些ISP阻止了端口25上的出站通信,因此最可靠的选择是HTTP POST,它不太可能被任何东西阻止。确保选择一个以后不会受到限制的URL,或者更好的是,让应用程序定期检查更新,因此,如果我们决定更改域或者其他内容,则可以提前推送更新。

安全并不是真正的问题。我们可以很容易地丢弃垃圾数据,因此,真正让我们担心的是,是否有人会构造虚假的回溯给我们造成麻烦,这是极不可能的情况。

至于有效载荷,PyCrash可以。