2008-09-17 12 views
8

Was wäre der beste Weg, um einen einfachen Crash-/Fehlermeldungsmechanismus zu implementieren?Wie implementiert man am besten einfache Crash-/Fehlerberichte?

Details: meine App ist Cross-Plattform (Mac/Windows/Linux) und geschrieben in Python, so brauche ich nur etwas, das mir eine kleine Menge an Text, z. nur ein Zeitstempel und eine Traceback (die ich bereits generiere und in meinem Fehlerdialog zeige).

Es wäre in Ordnung, wenn es einfach per E-Mail senden könnte, aber ich kann mir keinen Weg vorstellen, dies ohne einen Benutzernamen und ein Passwort für den SMTP-Server in der Anwendung zu tun ... Sollte ich ein einfaches Web implementieren Service auf der Server-Seite und habe meine App senden Sie eine HTTP-Anfrage mit der Info? Irgendwelche besseren Ideen?

Danke!

+0

Haben Sie eine Implementierung entwickelt, die Sie gerne teilen würden, insbesondere auf der Serverseite? Prost! –

Antwort

4

Der Web-Service ist der beste Weg, aber es gibt einige Einschränkungen:

  1. Sie sollten immer die Benutzer fragen, ob es in Ordnung ist, Fehler Feedback-Informationen zu senden.
  2. Sie sollten bereit sein, bei Netzwerkfehlern fehlerfrei zu arbeiten. Lassen Sie sich nicht von einem Absturz abhalten, der die Wiederherstellung verhindert!
  3. Sie sollten es vermeiden, benutzeridentifizierende oder vertrauliche Informationen anzugeben, es sei denn, der Benutzer weiß dies (siehe Nr. 1) und Sie sollten entweder SSL verwenden oder anderweitig schützen. Einige Gerichtsbarkeiten belasten Sie, mit denen Sie möglicherweise nicht umgehen möchten, so dass es am besten ist, solche Informationen nicht zu speichern.
  4. Stellen Sie sicher, dass Ihr Dienst nicht von Schurken ausgenutzt werden kann.
1

Der Web-Hit ist der Weg zu gehen, aber stellen Sie sicher, dass Sie eine gute URL auswählen - Ihre App wird es für die kommenden Jahre schlagen.

0

Ob Sie SMTP oder HTTP verwenden, um die Daten zu senden, müssen Sie einen Benutzernamen/ein Kennwort in der Anwendung haben, um zu verhindern, dass jeder zufällige Daten an Sie sendet.

In diesem Sinne, ich vermute, es wäre einfacher, SMTP anstelle von HTTP zu verwenden, um die Daten zu senden.

0

Irgendeine Art von einfachen Web-Service würde ausreichen. Sie müssen die Sicherheit in Betracht ziehen, damit nicht jeder Anfragen an Ihren Service stellen kann.

In größerem Maßstab haben wir ein JMS-Messaging-System in Betracht gezogen. Legen Sie ein serialisiertes Datenobjekt, das die Traceback-/Fehlermeldung enthält, in eine Warteschlange und verwenden Sie es alle x Minuten, um Berichte/Warnungen aus diesen Daten zu generieren.

3

ich nicht so denken kann, dies zu tun, einen Benutzernamen und ein Passwort für den SMTP-Server in der Anwendung ohne einschließlich ...

Sie müssen nur einen Benutzernamen und ein Passwort für die Authentifizierung von sich ein Smarthost. Sie benötigen es nicht, um E-Mails direkt zu senden, Sie benötigen es, um E-Mails über ein Relay zu senden, z. Mailserver Ihres ISP. Es ist durchaus möglich, E-Mails ohne Authentifizierung zu senden - deshalb ist Spam so schwer zu stoppen.

Trotzdem blockieren einige ISPs den ausgehenden Datenverkehr auf Port 25, so dass die robusteste Alternative ein HTTP POST ist, der wahrscheinlich von nichts blockiert wird.Achten Sie darauf, eine URL auszuwählen, von der Sie sich zu einem späteren Zeitpunkt nicht eingeschränkt fühlen, oder noch besser, wenn die Anwendung regelmäßig nach Updates sucht. Wenn Sie sich also für eine Änderung der Domain entscheiden, können Sie im Voraus eine Aktualisierung durchführen.

Sicherheit ist nicht wirklich ein Problem. Sie können ziemlich einfach Junk-Daten verwerfen, so dass alles, was Sie wirklich betrifft, ist, ob jemand sich die Mühe machen würde, gefälschte Trace-Backs zu erstellen, um sich mit Ihnen zu vermischen, und das ist eine sehr unwahrscheinliche Situation.

Wie für die Nutzlast kann PyCrash Ihnen dabei helfen.

Verwandte Themen