Отправить письмо в Global Exception Handler? - PullRequest
0 голосов
/ 07 февраля 2012

Я хочу добавить глобальный код обработки исключений в приложения C # WPF и, хотя он выглядит довольно неуклюжим (кажется, никто другой этого не делает), я хочу отправить разработчику письмо с информацией об исключениях. Основная проблема, о которой я могу подумать, заключается в том, что разработчик заканчивает тем, что меняет свой адрес электронной почты после развертывания программного обеспечения. Возможно, электронное письмо в отдел (например, тип рассылки в рассылке) будет более уместным? Кто-нибудь использовал такую ​​методологию, и если да, то какое решение вы нашли, чтобы убедиться, что кто-то получит сгенерированное исключение письмо?

Это лучшее решение:

// in exception code (pseudocode)
try
  SendEmailToTheCoder();
catch
  on EmailAddressNotValid:
    try
      SendEmailToTheListServ()
    catch
      on EmailNotSent:  
        LogExceptionDataToLog("Bla");

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

Ответы [ 2 ]

2 голосов
/ 07 февраля 2012

Лучшее, что можно сделать, - это сохранить детали сообщения вне приложения.

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

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

1 голос
/ 07 февраля 2012

Я бы просто создал группу рассылки, что-то вроде developer@yourcompany.com, и добавил бы людей, ответственных за программную часть этой группы рассылки. Если один разработчик покидает компанию, ничего в вашем коде не нужно менять, и не нужно сначала пытаться что-то одно, а потом другое.

Еще лучше, используйте каркас журналирования, такой как log4net ( nlog также популярен); Вы можете настроить его для входа в разные места (XML, базы данных, электронной почты и т. д.). Если вы ведете журнал по электронной почте, я всегда отправляю его в группу рассылки, даже если эта группа рассылки состоит только из одного участника.

...