2009-04-16 7 views
12

Estoy probando ELMAH y he desactivado deliberadamente la conexión de la base de datos para el registro ELMAH en mi aplicación para ver qué sucederá en la producción si el DB no está disponible.ELMAH SQL Error Handler database no disponible: ¿qué ocurre con el registro?

Parece que ELMAH no puede interceptar sus propios errores: el archivo AXD no está disponible cuando el registro SQLb databse falla.

¿Cuál es el comportamiento previsto de ELMAH si la base de datos no está disponible?

¿Cómo puedo diagnosticar mis errores si esto ocurre?

+1

+1 por pensar/probar los peores escenarios posibles ANTES de que ocurran. –

Respuesta

0

No estoy seguro acerca de ELMAH, pero el comportamiento esperado de dichos marcos de registro no es arrojar ninguna excepción si algo sale mal con ellos. Es decir. si la base de datos de ELMAH está inactiva, supongo que no registrará los errores en la base de datos.

Como se sugirió anteriormente, puede/debería utilizar sumideros alternativos: correo electrónico o archivo sin formato.

0

Siempre puede usar la opción de archivo xml para registrar sus errores.

0

Creo que estás mezclando contextos un poco.

El comportamiento de ELMAH si la base de datos no está disponible es no registrar errores en la base de datos. Si se lanza una excepción en el servidor o si presenta una excepción a través de ErrorSignal, ELMAH permitirá que esa excepción pase a una pantalla amarilla o a una página de errores personalizados (su configuración)

Dado que Errors.axd la página solo es accesible para aquellos que deberían verla (idealmente) está bien presentar ese error al usuario.

La conclusión es que si la base de datos de errores no funciona, no se pueden diagnosticar los errores. Para nosotros, si ese fuera el caso, tendríamos problemas mayores ya que la base de datos de errores se encuentra con la base de datos de producción.


También recomendaría no utilizar el registro XML para su fuente de registro principal. El servidor SQL le proporcionará el mejor rendimiento sin tener que administrar los archivos. Con el registro XML, ese no es el caso.

+0

Al depurar con ELmah.dll en el directorio web \ bin, la aplicación web arrojó un error en uno de los archivos fuente elmah (indicado por la información presente de elmah.pdb) cuando no pudo llegar a la base de datos. Por lo tanto, arrojará una excepción no controlada. ¿Funcionarán otros madereros ELMAH en ese caso? – Caveatrob

+0

No lo sé, nunca he intentado fallar. El proyecto Elmah es bastante sólido, así que estoy seguro de que lo han pensado. Tendrás que cavar. –

12

Parece que ELMAH No puede interceptar sus propios errores

ELMAH hace atrapar sus propios errores en cierta medida. Si el ErrorLogModule encuentra una excepción al intentar registrar el error, la excepción resultante del registro se envía al recurso de rastreo de .NET Framework estándar. Ver line 123 from 1.0 sources. Ver también los siguientes paseo a través de la documentación de ASP.NET para conseguir el trazado de .NET Framework estándar de trabajo con ASP.NET rastreo:

Walkthrough: Integrating ASP.NET Tracing with System.Diagnostics Tracing

el archivo AXD no está disponible cuando el SQL databse log failed.

Eso es correcto. La conectividad de la base de datos de SQL Server debe ser funcional para ver los errores almacenados en una base de datos de SQL Server al usar SqlErrorLog.

¿Cuál es el comportamiento previsto de ELMAH si la base de datos no está disponible?

Si, por ejemplo, la base de datos de SQL Server está inactiva, se producirá un SqlException durante el registro. ELMAH enviará el contenido del objeto SqlException a la función de rastreo de .NET Framework estándar.

¿Cómo puedo diagnosticar mis errores si ocurre esto ?

La mejor opción aquí es permitir también la tala y envío por correo electrónico de errores. Si la base de datos no funciona, es probable que la puerta de enlace de correo esté activada y aún recibirás notificaciones de errores. Los errores obtendrán, en efecto, registrado en algunos buzones de correo. Esto también tiene la ventaja adicional de que si la puerta de enlace de correo está inactiva, es probable que la base de datos esté activa y los errores se registren allí. Sin embargo, si ambos están caídos, necesitará revisar seriamente su infraestructura de producción y posiblemente tomar medidas para monitorear la salud de su sistema a través de medidas adicionales.

Cuestiones relacionadas