Способ обработки ошибок в вашем веб-приложении после его запуска в производство - PullRequest
2 голосов
/ 24 ноября 2011

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

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

Пути, которые мы до сих пор думали, включают:

  • Простая печать ошибки на странице в виде текста для копирования пользователем.
  • Предоставление кнопки для копирования ошибки в буфер обмена для их вставки в электронное письмо.
  • Предоставление пользователю справочной формы для заполнения, которая отправит сообщение об ошибке.
  • Предоставление кнопки «Отправить ошибку», которая просто перенаправляет ошибку на настроенный или введенный пользователем адрес электронной почты.
  • Сохранение сведений об ошибке в таблице базы данных при загрузке страницы для просмотра сотрудником службы поддержки.

Ни один из них не выделяется мне как супер чистый или интуитивно понятный. Кто-нибудь придумал уникальный и чистый способ справиться с такой ситуацией?

Примечание: я ищу решение для обработки сообщений об ошибках в системе, а не решение для обратной связи с пользователями.

Ответы [ 6 ]

6 голосов
/ 01 декабря 2011

Если вы отображаете всю информацию, которая нужна пользователю, почему бы просто не войти в базу данных или отправить электронное письмо в службу поддержки?Таким образом, вам не нужно беспокоиться о том, что у вас есть ошибки.Отправьте их на страницу «Извините, но попробуйте позже» ...

1 голос
/ 08 декабря 2011

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

Обычно я записываю ошибку в журнал ошибок Windows вместе с уникальным кодом (GUID). В сообщении об ошибке, которое видит пользователь, включите GUID и дайте им знать, что они могут связаться с вашей службой поддержки, если они хотели бы спросить об ошибке или сообщить более подробную информацию о том, что происходило в то время.

Чтобы записать в журнал ошибок, позвоните System.Diagnostics.EventLog.WriteEntry(). Также легко написать инструменты для запроса журнала событий, программно или из командной строки с такими инструментами, как Log Parser.

0 голосов
/ 08 декабря 2011

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

Итак, мы должны:

  1. Иметь возможность автоматически знать, когда происходит ошибка

Не было бы замечательно:

  1. Получите автоматическое электронное письмо, содержащее сведения об ошибках при возникновении ошибки
  2. Получите описательную информацию об ошибке
  3. Узнайте, где в вашем коде произошла ошибка
  4. Записывать такую ​​информацию, как пользователь, ip и всю информацию о форме.
  5. Обрабатывать несколько приложений и веб-сайтов с одной страницы обработки ошибок.
  6. Предоставлять справочный номер и дружеское сообщение для пользователей
  7. Предотвращение возможного взлома злоумышленниками вашего веб-сайта. Предотвращение утечки важной информации

Исключение с кодами ошибок:

400      Bad Request
401;1    Unauthorized - Login Failed
401;2    Unauthorized - Login failed due to server configuration
404      Not Found
500      Internal Server Error
500;12   Internal Server Error - Application Restarting
500;13   Internal Server Error - Server Too Busy
500;15   Internal Server Error - Direct Requests For Global.asa
500;100  Internal Server Error - language (ASP,PHP ,JSP) Error
0 голосов
/ 08 декабря 2011

Учитывая ваш последний комментарий, выделенный жирным шрифтом, я бы предложил вам использовать ведение журнала ошибок. Вы не упоминаете, на каком языке вы работаете, но если вы используете Java, вы можете объявить свои страницы с ошибками (например, <%@ page errorPage="error.jsp" %>) и посмотреть, какие исключения были обработаны. Это хорошо работает для ожидаемых ошибок, но может не подходить для непредвиденных ошибок.

0 голосов
/ 24 ноября 2011

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

Помните, что, вероятно, будет интересно просмотреть весь набор взаимодействий с этим пользователем, приводящий к ошибке, а не только окончательное сообщение об исключении.

0 голосов
/ 24 ноября 2011

Вы можете взглянуть на подключение UserVoice .Он отлично подходит для сбора отзывов пользователей и прост в настройке.

...