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

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

How to best implement simple crash / error reporting?

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

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

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


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

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

  • 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可以帮助您。


    PyCrash?


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


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

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


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

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


    推荐阅读