Как лучше всего реализовать простое сообщение о сбоях / ошибках? - PullRequest
8 голосов
/ 17 сентября 2008

Как лучше всего реализовать простой механизм сообщения о сбоях / ошибках?

Подробности: мое приложение кроссплатформенное (mac / windows / linux) и написано на Python , поэтому мне просто нужно что-то, что отправит мне небольшое количество текста, например просто временная метка и трассировка (которую я уже генерирую и показываю в моем диалоге ошибок).

Было бы хорошо, если бы он мог просто отправить его по электронной почте, но я не могу придумать, как это сделать, не указав имя пользователя и пароль для сервера smtp в приложении ... Должен ли я реализовать простой веб-сервис на стороне сервера, и мое приложение должно отправить ему HTTP-запрос с информацией? Есть идеи получше?

Ответы [ 6 ]

5 голосов
/ 17 сентября 2008

Веб-сервис - лучший способ, но есть несколько предостережений:

  1. Вы всегда должны спрашивать пользователя, можно ли отправлять информацию об ошибке.
  2. Вы должны быть готовы к грациозному сбою в случае сетевых ошибок. Не позволяйте сообщению о сбое препятствовать восстановлению!
  3. Вы должны избегать включения идентифицирующей или конфиденциальной информации пользователя, если пользователь не знает (см. # 1), и вы должны либо использовать SSL, либо иным образом защитить его. Некоторые юрисдикции налагают на вас бремя, с которым вы, возможно, не захотите иметь дело, поэтому лучше просто не сохранять такую ​​информацию.
  4. Как и любой веб-сервис, убедитесь, что ваш сервис не может использоваться злоумышленниками.
3 голосов
/ 17 сентября 2008

Я не могу придумать способ сделать это без включения имени пользователя и пароля для сервера smtp в приложение ...

Вам нужно только имя пользователя и пароль для аутентификации на smarthost. Вам не нужно отправлять почту напрямую, вам нужно отправлять почту через ретранслятор, например, почтовый сервер вашего провайдера. Совершенно возможно отправлять электронную почту без аутентификации - поэтому спам так трудно остановить.

Сказав это, некоторые интернет-провайдеры блокируют исходящий трафик через порт 25, поэтому наиболее надежной альтернативой является HTTP POST, который вряд ли что-либо заблокирует. Обязательно выберите URL-адрес, который вы не будете чувствовать себя ограниченным позднее или, что еще лучше, периодически проверяйте приложение на наличие обновлений, поэтому, если вы решите сменить домен или что-то еще, вы можете заранее отправить обновление.

Безопасность на самом деле не проблема. Вы можете довольно легко отбросить ненужные данные, поэтому все, что вас действительно беспокоит, так это то, пойдет ли кто-нибудь на создание ложных трассировок, чтобы связываться с вами, и это очень маловероятная ситуация.

Что касается полезной нагрузки, PyCrash может помочь вам в этом.

1 голос
/ 17 сентября 2008
1 голос
/ 17 сентября 2008

Веб-хит - это путь, но убедитесь, что вы выбрали хороший URL - ваше приложение будет посещать его в течение многих лет.

0 голосов
/ 17 сентября 2008

Какой-то простой веб-сервис будет достаточно. Вы должны были бы рассмотреть вопрос безопасности, чтобы не каждый мог отправлять запросы на ваше обслуживание.

В более широком масштабе мы рассматривали систему обмена сообщениями JMS. Поместите в очередь сериализованный объект данных, содержащий сообщение трассировки / ошибки, и используйте его каждые x минут, создавая отчеты / оповещения из этих данных.

0 голосов
/ 17 сентября 2008

Независимо от того, используете ли вы SMTP или HTTP для отправки данных, вам необходимо иметь имя пользователя / пароль в приложении, чтобы никто не мог посылать вам случайные данные.

Имея это в виду, я подозреваю, что было бы проще использовать SMTP, а не HTTP для отправки данных.

...