Поля для сохранения в базе данных при обработке исключений C # - PullRequest
1 голос
/ 25 марта 2012

Я собираюсь обработать проект для клиента на этапе тестирования, сборка проекта с ASP.NET MVC3. Что мне нужно, это сохранить все исключения, возникающие в постоянном расположении -SQL База данных-

и у меня есть несколько вопросов ..

  1. какое поле мне сохранить в базе данных? (Сообщение, след и т. Д.)
  2. Я видел, как люди сохраняли внутреннее исключение, но иногда мои исключения имеют нулевое внутреннее исключение.
  3. Как лучше всего обработать ошибку и сохранить в БД. (В global.asax ИЛИ определяя пользовательскую страницу ошибки в web.config и получая последнюю ошибку с server.getLastError)

Ответы [ 2 ]

4 голосов
/ 25 марта 2012

какое поле мне сохранить в базе данных?(Msg, трассировка и т. Д.)

Все, что вы можете, если возможно:

  • Тип
  • Сообщение
  • Отслеживание стека

Я видел, как люди сохраняли внутреннее исключение, но иногда мои исключения имеют нулевое внутреннее исключение.

А у некоторых будет больше одного вложенного.Вы должны сохранить все, что можете, ИМО.Как вы структурируете это на ваше усмотрение, но вы всегда можете добавить самый внутренний, затем содержащийся с внешним ключом к внутреннему и т. Д., Работая наружу.

Что такоеЛучшее место, чтобы обработать ошибку и сохранить ее в БД.

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

1 голос
/ 25 марта 2012
  1. Как сказал Джон Скит, чем больше полей вы сохраняете, тем больше данных вам потребуется для диагностики проблем по ходу работы.Лично я бы пошел на сериализацию исключения и поместил его в столбец типа «XML», если у вас есть такая возможность (пространство базы данных и соображения производительности).Это также устранит вторые проблемы, поскольку внутреннее исключение также будет сериализовано.Хотя при таком подходе все ваши пользовательские исключения должны быть способны правильно сериализоваться.
  2. Я бы порекомендовал взглянуть на свободно доступные исходные коды для регистраторов ошибок, таких как Elmah , чтобы получить основную идею.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...