Как наилучшим образом реализовать простые отчеты о сбоях / ошибках?
-
01-07-2019 - |
Вопрос
Каков был бы наилучший способ реализовать простой механизм сообщения о сбоях / ошибках?
Подробные сведения:мое приложение - это кроссплатформенный (mac/ Windows / linux) и написанный на Python, поэтому мне просто нужно что-то, что отправит мне небольшое количество текста, напримерпросто временная метка и обратная трассировка (которые я уже сгенерировал и показываю в своем диалоговом окне ошибки).
Было бы прекрасно, если бы можно было просто отправить его по электронной почте, но я не могу придумать способ сделать это без указания имени пользователя и пароля для smtp-сервера в приложении...Должен ли я реализовать простой веб-сервис на стороне сервера и попросить мое приложение отправить ему HTTP-запрос с информацией?Есть идеи получше?
Решение
Веб-сервис - лучший способ, но есть некоторые оговорки:
- Вы всегда должны спрашивать пользователя, можно ли отправлять информацию об отзыве об ошибке.
- Вы должны быть готовы к корректному завершению работы в случае возникновения сетевых ошибок.Не позволяйте невозможности сообщить о сбое препятствовать восстановлению!
- Вам следует избегать включения идентифицирующей пользователя или конфиденциальной информации, если только пользователь не знает об этом (см. # 1), и вам следует либо использовать SSL, либо иным образом защитить ее.Некоторые юрисдикции налагают на вас бремя, с которым вы, возможно, не захотите иметь дело, поэтому лучше просто не сохранять такую информацию.
- Как и любой веб-сервис, убедитесь, что ваш сервис не может быть использован злоумышленниками.
Другие советы
Я не могу придумать, как это сделать, не включая имя пользователя и пароль для smtp-сервера в приложение...
Вам нужно только имя пользователя и пароль для авторизации на smarthost.Вам это не нужно для отправки почты напрямую, вам это нужно для отправки почты через ретранслятор, напримерпочтовый сервер вашего интернет-провайдера.Вполне возможно отправлять электронную почту без аутентификации - вот почему спам так трудно остановить.
Сказав это, некоторые интернет-провайдеры блокируют исходящий трафик на порту 25, поэтому наиболее надежной альтернативой является HTTP POST, который вряд ли будет заблокирован чем-либо.Обязательно выберите URL-адрес, который впоследствии не будет вас ограничивать, или, что еще лучше, попросите приложение периодически проверять наличие обновлений, чтобы, если вы решите сменить домен или что-то еще, вы могли отправить обновление заранее.
Безопасность на самом деле не является проблемой.Вы можете довольно легко отбросить ненужные данные, так что все, что вас действительно беспокоит, - это станет ли кто-нибудь утруждать себя созданием поддельных обратных следов, чтобы напакостить вам, а это очень маловероятная ситуация.
Что касается полезной нагрузки, Пикраш могу помочь вам с этим.
Веб-хит - это правильный путь, но убедитесь, что вы выбрали хороший URL-адрес - ваше приложение будет пользоваться им долгие годы.
Независимо от того, используете ли вы SMTP или HTTP для отправки данных, у вас должно быть имя пользователя / пароль в приложении, чтобы никто не мог отправлять вам случайные данные.
Имея это в виду, я подозреваю, что для отправки данных было бы проще использовать SMTP, а не HTTP.
Было бы достаточно какого-нибудь простого веб-сервиса.Вам нужно было бы позаботиться о безопасности, чтобы не просто кто-то мог делать запросы к вашему сервису..
В более широком масштабе мы рассмотрели систему обмена сообщениями JMS.Поместите сериализованный объект данных, содержащий трассировку / сообщение об ошибке, в очередь и используйте его каждые x минут, генерируя отчеты / оповещения на основе этих данных.