Что должно идти в надежном сообщении об ошибке для отладки? - PullRequest
2 голосов
/ 18 ноября 2008

Помимо информирования пользователя, мы хотим собирать информацию для наших целей отладки. Наша система является нишевой системой только для 1400 клиентов, и поэтому мы не так хорошо финансируемы, как хотелось бы надеяться, поэтому ошибки встречаются чаще, чем хотелось бы. В настоящее время у нас есть окно, которое показывает первую строку сообщения об ошибке крупным шрифтом с желтым фоном, чтобы нарисовать глаз пользователя, с страшной частью в текстовом поле под ним с серым фоном. Также есть кнопка, которая поместит все это в буфер копирования для отправки в службу поддержки. Сообщение, к которому мы пытаемся перейти, состоит из исключения. Сообщение, последние пять частей трассировки стека и имя метода, вызвавшего ошибку (Reflection.MethodBase). Мы планируем добавить пользователю возможность сказать, что он делал в то время, и, возможно, переключатель, показывающий, как часто это происходит, и записать его в файл журнала. Какую другую полезную информацию мы должны включить?

Мы также рассматриваем возможность отправки по электронной почте в службу поддержки, но не обращаем внимания на то, что электронная почта не удалась. Есть и другие соображения, связанные с электронной почтой - поддержка клиентов может затонуть, пользователи могут возразить, потому что мы также будем отправлять информацию о системе и т. Д.

Я нашел два похожих вопроса по SO, но они не сфокусированы на том, что меня интересует. Текст сообщения об ошибке - Best Practices посвящен тому, как создавать полезные сообщения для пользователя, и Лучший способ обработки сообщений об ошибках имеет дело с тем, где хранить идентификаторы ошибок и текст ошибок. Меня больше интересует отладка (потому что, к сожалению, в нашей системе много ошибок).

Ответы [ 3 ]

1 голос
/ 18 ноября 2008

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

string _osSql = @"SELECT * FROM Win32_OperatingSystem";
string _metric = string.Format("Metric Data:{0}", Environment.NewLine);

foreach (Screen _screen in Screen.AllScreens)
{
    if (_screen.Primary == true)
    {
        _metric += "Primary";
    }

    _metric += string.Format("Screen: Width:={0}, Height:={1}{2}", Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, Environment.NewLine);
}

ManagementObjectSearcher _mgmt = new ManagementObjectSearcher(_osSql);

foreach (ManagementObject _o in _mgmt.Get())
{
    _metric += string.Format("OS:={0} - {1}{2}", _o.Properties["Caption"].Value.ToString(), _o.Properties["CSDVersion"].Value.ToString(), Environment.NewLine);
    _metric += string.Format("Memory  Total:={0}, Available:={1}{2}", _o.Properties["TotalVisibleMemorySize"].Value.ToString(), _o.Properties["FreePhysicalMemory"].Value.ToString(), Environment.NewLine);
    _metric += string.Format("Description:={0}{1}", _o.Properties["Description"].Value.ToString(), Environment.NewLine);
    _metric += string.Format("TotalVisibleMemorySize:={0}{1}", _o.Properties["TotalVisibleMemorySize"].Value.ToString(), Environment.NewLine);
    _metric += string.Format("FreePhysicalMemory:={0}{1}", _o.Properties["FreePhysicalMemory"].Value.ToString(), Environment.NewLine);
}
1 голос
/ 19 ноября 2008

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

1 голос
/ 18 ноября 2008

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

Кроме этого, может быть полезно включить:

  • номер сборки программного обеспечения в сообщении об ошибке, если у вас несколько версий вашего продукта.
  • дата / время в UTC
  • операционная система / браузер / среда / и т. Д. (что важно)
  • роль безопасности пользователя, логин и т. Д.
  • отслеживание контактной информации (телефон, электронная почта и т. Д.) Для пользователя
  • контактная информация для ВАС на экране ошибки
...