2008-09-17 9 views
8

Jaki byłby najlepszy sposób wdrożenia prostego mechanizmu zgłaszania awarii/błędów?Jak najlepiej wdrożyć proste zgłaszanie awarii/błędów?

Szczegóły: moja aplikacja to między platformami (mac/windows/linux) i napisana w języku Python, więc potrzebuję czegoś, co wyśle ​​mi niewielką ilość tekstu, np. tylko znacznik czasu i traceback (który już generuję i pokazuję w moim oknie dialogowym błędu).

Byłoby dobrze, gdyby mógł po prostu wysłać e-mailem, ale nie mogę wymyślić sposób, aby to zrobić bez podawania nazwy użytkownika i hasła do serwera SMTP w aplikacji ... Czy powinienem wdrożyć prostą sieć? usługi po stronie serwera i czy moja aplikacja wysyła żądanie HTTP z informacją? Jakieś lepsze pomysły?

Dzięki!

+0

Czy wymyślili Państwo implementację, którą chcielibyście udostępnić, zwłaszcza po stronie serwera? Twoje zdrowie! –

Odpowiedz

4

Usługa internetowa jest najlepszym sposobem, ale istnieją pewne zastrzeżenia:

  1. Należy zawsze zwrócić się do użytkownika, jeśli jest OK, aby wysłać informację zwrotną o błędzie.
  2. Powinieneś być przygotowany na niepowodzenie wdzięczności, jeśli występują błędy sieciowe. Nie pozwól, aby niepowodzenie zgłoszenia awarii uniemożliwiło przywrócenie systemu!
  3. Należy unikać podawania informacji identyfikujących użytkownika lub informacji poufnych, chyba że użytkownik wie (patrz # 1) i należy użyć SSL lub w inny sposób go zabezpieczyć. Niektóre jurysdykcje nakładają na ciebie ciężary, z którymi możesz nie chcieć sobie poradzić, więc najlepiej nie zapisywać takich informacji.
  4. Podobnie jak w przypadku innych usług internetowych, upewnij się, że usługa nie jest dostępna dla niewłaściwych użytkowników.
1

Uderzenie w sieć to sposób na sukces, ale upewnij się, że wybierasz dobry URL - Twoja aplikacja będzie go wyświetlać przez wiele lat.

0

Niezależnie od tego, czy do wysyłania danych używasz protokołu SMTP czy HTTP, musisz mieć nazwę użytkownika/hasło w aplikacji, aby uniemożliwić każdemu przesyłanie losowych danych do Ciebie.

Biorąc to pod uwagę, podejrzewam, że łatwiej byłoby używać SMTP zamiast HTTP do wysyłania danych.

0

Wystarczy prosty serwis internetowy. Musisz wziąć pod uwagę bezpieczeństwo, więc nie każdy może zgłaszać żądania do Twojej usługi.

Na większą skalę rozważaliśmy system przesyłania wiadomości JMS. Umieść sparametryzowany obiekt danych zawierający komunikat o stanie śledzenia/błędzie w kolejce i korzystaj z niego co x minut, generując raporty/alerty z tych danych.

3

Nie mogę myśleć o sposób to zrobić bez tym nazwę użytkownika i hasło dla serwera SMTP w aplikacji ...

Trzeba tylko nazwę użytkownika i hasło do uwierzytelniania się do a smarthost. Nie musisz jej bezpośrednio wysyłać, musisz wysłać pocztę przez przekaźnik, np. serwer pocztowy twojego ISP. Wysyłanie e-maili bez autoryzacji jest całkowicie możliwe - właśnie dlatego spam jest tak trudny do zatrzymania.

Powiedziawszy to, niektórzy dostawcy usług internetowych blokują ruch wychodzący na porcie 25, więc najsolidniejszą alternatywą jest POST HTTP, który prawdopodobnie nie zostanie zablokowany przez nic.Upewnij się, że wybrałeś adres URL, którego nie będziesz później czuł się ograniczony, lub jeszcze lepiej, czy aplikacja okresowo sprawdza dostępność aktualizacji, więc jeśli zdecydujesz się na zmianę domen lub coś takiego, możesz wcześniej przesłać aktualizację.

Bezpieczeństwo nie jest problemem. Możesz dość łatwo odrzucić niepotrzebne dane, więc wszystko, co naprawdę dotyczy ciebie, to to, czy ktoś zadał sobie trud skonstruowania fałszywych tropów, by z tobą zadzierać, i to jest bardzo nieprawdopodobne.

Jeśli chodzi o ładunek, PyCrash może w tym pomóc.