2009-09-08 15 views
23

Tenemos un solo registro de SQL para almacenar errores de múltiples aplicaciones. Hemos desactivado la página elmah.axd para cada una de nuestras aplicaciones y nos gustaría tener una nueva aplicación que muestre específicamente los errores de todas las aplicaciones que reportan errores al registro común de SQL.Use solo Elmah.axd para múltiples aplicaciones con un solo registro de base de datos

A partir de ahora, aunque la aplicación para todos los errores está utilizando el registro SQL común, solo muestra errores de la aplicación actual. ¿Alguien ha hecho esto antes? ¿Qué dentro del código elmah podría necesitar ser ajustado?

+1

Gracias por hacer una pregunta tan agradable de manera clara, has tomado mis palabras con la máquina del tiempo. Es casi 6-7 años después ahora. – AKS

Respuesta

30

Supongo que con "SQL Log" se refiere al servidor MSSQL ... Si es así, probablemente la forma más sencilla de lograr lo que desea sería editar los procedimientos almacenados creados en la base de datos SQL Server que contiene los errores.

para obtener la lista de errores, el ELMAH DLL llama al proc ELMAH_GetErrorsXML con el nombre de la aplicación como un parámetro, el proc filtra la vuelta con una cláusula WHERE [Application] = @Application.

Simplemente elimine la cláusula WHERE del proceso ELMAH_GetErrorsXML, y todos los errores se deben devolver independientemente de la aplicación.

Para obtener un solo registro de error correctamente, tendrá que hacer lo mismo con el ELMAH_GetErrorXML proc, ya que también filtra por aplicación.

Esto, por supuesto, afectará a cualquier aplicación que recupere errores de esta base de datos en particular, pero supongo que en su caso solo tendrá una, por lo que debería ser buena.

advertencia: No he probado esto, así que no puedo garantizar los resultados ...

+0

¡Correcto! Veré las modificaciones de sproc. – RSolberg

+1

@ E.King, gracias su respuesta funciona como un encanto ... – AKS

2

Sí, fácilmente se trabaja. Sin embargo, no puede ver el nombre de la aplicación en Elmah/Default.aspx. No he encontrado si es confugurable, solo muestra una columna más.

+1

Eso es cierto. El diseño de esa página se define en el código ErrorLogPage.cs, por lo que para agregar otra columna deberá descargar el origen, realizar los cambios y volver a compilar. http://code.google.com/p/elmah/source/browse/trunk/src/Elmah/ErrorLogPage.cs –

4

No es un problema anular la fábrica de controlador Elmah predeterminada para que filtre los registros de Elmah por las aplicaciones. Escribí una aplicación de muestra que muestra cómo hacerlo con MySql: http://diagnettoolkit.codeplex.com/releases/view/103931. También puede marcar post on my blog donde explico cómo funciona.

+0

+1: así se supone que debe hacerse. Limpio y simple, sin necesidad de modificar las secuencias de comandos DDL originales ni el código fuente de Elmah. La publicación del blog lo explica todo. Buen trabajo señor! –

+0

Acabo de implementar esto. Funciona bien! –

+0

Esta es una buena alternativa. Sin embargo, la desventaja es que solo puede ver los errores de una aplicación a la vez, y debe saber el nombre de la aplicación por adelantado. Si desea ver una lista de errores en todas las aplicaciones (que es cómo interpreté la pregunta), esto no lo hará, a menos que simplemente no esté viendo esa pieza. –

Cuestiones relacionadas