Подтвердить что ты не робот

База данных обработчиков ошибок ELMAH SQL недоступна - что происходит с протоколированием?

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

Кажется, что ELMAH не может ловить собственные ошибки - файл AXD недоступен, когда журнал SQL-данных не срабатывает.

Каково предполагаемое поведение ELMAH, если база данных недоступна?

Как я могу диагностировать свои ошибки, если это происходит?

4b9b3361

Ответ 1

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

Как указано выше, вы можете/должны использовать альтернативные раковины - электронную почту или плоский файл.

Ответ 2

Кажется, что ELMAH не может ловить собственные Ошибки

ELMAH в некоторой степени ломает свои ошибки. Если ErrorLogModule обнаруживает исключение при попытке зарегистрировать ошибку, то исключение, возникающее в результате регистрации, отправляется в стандартную среду трассировки .NET Framework. См. строка 123 из источников 1.0. См. Также следующий переход из документации ASP.NET для получения стандартной трассировки .NET Framework, работающей с ASP Трассировка .NET:

Пошаговое руководство: интеграция трассировки ASP.NET с отслеживанием System.Diagnostics

файл AXD недоступен, если Ошибка SQL-журнала данных.

Это правильно. Подключение базы данных SQL Server должно быть функциональным для просмотра ошибок, хранящихся в базе данных SQL Server при использовании SqlErrorLog.

Каково предполагаемое поведение ELMAH если база данных недоступна?

Если, например, база данных SQL Server не работает, во время ведения журнала будет происходить SqlException. Затем ELMAH отправит содержимое объекта SqlException в стандартную среду трассировки .NET Framework.

Как я могу диагностировать свои ошибки, если это происходит?

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

Ответ 3

Вы всегда можете использовать параметр файла xml для регистрации ошибок.

Ответ 4

Я думаю, что вы немного смешиваете контексты.

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

Так как страница Errors.axd доступна только тем, кто должен ее видеть (в идеале), это нормально представить эту ошибку пользователю.

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


Я бы также выступал против использования XML-ведения журнала для вашего основного источника ведения журнала. SQL Server обеспечит вам максимальную производительность без необходимости управлять файлами. С регистрацией XML это не так.