Wie implementiere ich am besten einfache Crash- / Fehlerberichte?

8

Was wäre der beste Weg, um einen einfachen Crash- / Fehlermeldungsmechanismus zu implementieren?

Details: Meine App ist plattformübergreifend (mac / windows / linux) und in Python geschrieben , also brauche ich nur etwas, das mir eine kleine Menge 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 eine E-Mail senden könnte, aber ich kann mir keinen Weg vorstellen, dies zu tun, ohne einen Benutzernamen und ein Passwort für den SMTP-Server in der Anwendung anzugeben ... Sollte ich auf der Serverseite einen einfachen Webservice implementieren und meine App eine HTTP-Anfrage mit der Info senden lassen? Irgendwelche besseren Ideen?

Danke!

    
dF. 17.09.2008, 18:09
quelle

6 Antworten

4

Der Webservice ist der beste Weg, aber es gibt einige Vorbehalte:

  1. Sie sollten den Benutzer immer fragen, ob es in Ordnung ist, Fehler-Feedback-Informationen zu senden.
  2. Sie sollten darauf vorbereitet sein, bei Netzwerkfehlern ordnungsgemäß zu scheitern. Lassen Sie sich nicht von einem Absturz abhalten, der die Wiederherstellung meldet! ​​
  3. Sie sollten es vermeiden, nutzeridentifizierende 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 auferlegen Ihnen Belastungen, mit denen Sie möglicherweise nicht umgehen möchten, daher ist es am besten, solche Informationen nicht zu speichern.
  4. Wie bei jedem Web-Service sollten Sie sicherstellen, dass Ihr Dienst nicht von Schurken missbraucht werden kann.
nsayer 17.09.2008, 18:16
quelle
3
  

Ich kann mir keinen Weg vorstellen, dies zu tun, ohne einen Benutzernamen und ein Passwort für den SMTP-Server in der Anwendung anzugeben ...

Sie brauchen nur einen Benutzernamen und ein Passwort, um sich mit einem Smarthost zu authentifizieren. 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.

Nachdem einige ISPs den ausgehenden Datenverkehr auf Port 25 blockiert haben, ist die stabilste Alternative ein HTTP-POST, 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: Lassen Sie die Anwendung regelmäßig nach Updates suchen. Wenn Sie also Domains ändern möchten, können Sie vorab eine Aktualisierung vornehmen.

>

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 Payload kann PyCrash Ihnen dabei helfen.

    
Jim 17.09.2008 18:30
quelle
1

Der Web-Hit ist der richtige Weg, aber stellen Sie sicher, dass Sie eine gute URL auswählen - Ihre App wird es noch Jahre später treffen.

    
pjz 17.09.2008 18:11
quelle
1

PyCrash ?

    
Allan Wind 17.09.2008 18:12
quelle
0

Unabhängig davon, ob Sie SMTP oder HTTP zum Senden der Daten verwenden, müssen Sie in der Anwendung einen Benutzernamen / ein Kennwort haben, um zu verhindern, dass jemand Ihnen zufällige Daten sendet.

Vor diesem Hintergrund vermute ich, dass es einfacher wäre, SMTP anstatt HTTP zu verwenden, um die Daten zu senden.

    
Branan 17.09.2008 18:13
quelle
0

Eine Art einfacher Webservice würde ausreichen. Sie müssten Sicherheit in Betracht ziehen, so dass nicht nur jeder Anfragen an Ihren Dienst stellen könnte.

In größerem Umfang haben wir ein JMS-Messaging-System in Betracht gezogen. Setzen 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.

    
Benjamin W. Smith 17.09.2008 18:17
quelle