提问人:dF. 提问时间:9/18/2008 最后编辑:bad_coderdF. 更新时间:5/4/2022 访问量:1579
如何最好地实现简单的崩溃/错误报告?
How to best implement simple crash / error reporting?
问:
实现简单的崩溃/错误报告机制的最佳方法是什么?
详细信息:我的应用程序是跨平台(mac / windows / linux)并且是用Python编写的,所以我只需要一些可以向我发送少量文本的东西,例如只是一个时间戳和一个回溯(我已经生成并显示在我的错误对话框中)。
如果它可以简单地通过电子邮件发送就好了,但是我想不出一种方法来做到这一点,而无需在应用程序中包含 smtp 服务器的用户名和密码...... 我是否应该在服务器端实现一个简单的 Web 服务,并让我的应用向它发送包含信息的 HTTP 请求?有更好的主意吗?
答:
网络点击是要走的路,但请确保你选择一个好的 URL - 你的应用程序将在未来几年内点击它。
无论您使用 SMTP 还是 HTTP 发送数据,您都需要在应用程序中有一个用户名/密码,以防止任何人向您发送随机数据。
考虑到这一点,我怀疑使用 SMTP 而不是 HTTP 来发送数据会更容易。
Web 服务是最好的方式,但有一些注意事项:
- 应始终询问用户是否可以发送错误反馈信息。
- 如果出现网络错误,您应该准备好正常失败。不要让未报告崩溃阻碍恢复!
- 除非用户知道(参见#1),否则应避免包含用户标识或敏感信息,并且应使用SSL或以其他方式保护它。有些司法管辖区会给您带来您可能不想处理的负担,因此最好不要保存此类信息。
- 与任何 Web 服务一样,请确保您的服务不会被不法分子利用。
某种简单的 Web 服务就足够了。您必须考虑安全性,因此不是任何人都可以向您的服务提出请求。
在更大的范围内,我们考虑了一个 JMS 消息传递系统。将包含回溯/错误消息的序列化数据对象放入队列中,并每 x 分钟使用一次,从该数据生成报告/警报。
如果不在应用程序中包含 smtp 服务器的用户名和密码,我想不出一种方法来做到这一点......
您只需要一个用户名和密码即可向智能主机验证自己的身份。您不需要它直接发送邮件,而是需要它通过中继发送邮件,例如ISP的邮件服务器。完全有可能在没有身份验证的情况下发送电子邮件 - 这就是为什么垃圾邮件如此难以阻止的原因。
话虽如此,一些 ISP 会阻止端口 25 上的出站流量,因此最强大的替代方案是 HTTP POST,它不太可能被任何东西阻止。请务必选择一个您以后不会感到受限制的 URL,或者更好的是,让应用程序定期检查更新,因此如果您决定更改域或其他内容,您可以提前推送更新。
安全性并不是真正的问题。你可以很容易地丢弃垃圾数据,所以你真正关心的是是否有人会不厌其烦地构建虚假的回溯来惹你,这是一个非常不可能的情况。
至于有效载荷,PyCrash 可以帮助您。
评论