2010-12-18 19 views

Respuesta

24

Puede establecer el número máximo de entradas de registro, pero no hay una función nativa para borrar registros anteriores a una fecha determinada. ¡Es una buena solicitud de características, sin embargo!

Si está almacenando los registros de errores en la memoria, el número máximo almacenado es 500 por defecto y esto no requiere configuración adicional. Como alternativa, se puede definir el número usando la palabra clave size:

<elmah> 
    <errorLog type="Elmah.MemoryErrorLog, Elmah" size="50" /> 
</elmah> 

Configuración de un tamaño fijo es obviamente más importante para el registro basado en XML en memoria o, cuando deben estar estrechamente gestionado recursos. Sin embargo, puede definir un tamaño fijo para cualquier tipo de registro.

+0

Este es sin duda un área en la que se Elmah falta por completo, a pesar de que se ha solicitado en numerosas ocasiones. No debería ser tan difícil permitir las eliminaciones de entradas de registro individuales, así como una función de borrar todo. Lamentablemente, está solo para esa funcionalidad. –

+7

Es un proyecto de código abierto. Si tiene el tiempo y la inclinación, coloque el código y agregue la función. –

+1

¿Y arriesgarse a tener que implementar o fusionar cambios en su código bifurcado? No gracias hermano.Esta es la funcionalidad mínima básica de cualquier herramienta de registro, IMO. Debería incluirse en el proyecto y se ha solicitado desde que el proyecto se llevó a cabo. –

2

En respuesta a lo que Phil Wheeler mencionó anteriormente, en un proyecto actual que estoy haciendo en Mvc4, tenemos un área de Mvc llamada SiteAdmin. Esta área será responsable de todas las tareas de administración del sitio, incluido Elmah.

Para superar la falta de funcionalidad de eliminación, implementé una función para eliminar todas las entradas de registro actuales en Elmah (estamos usando la versión basada en XML).

Aquí es una imagen de la vista del índice siteadmin:

enter image description here

  • Ver registro de errores - Abre el Elmah interfaz de usuario en una nueva ventana.
  • Borrar registro de errores: presenta una ventana emergente de confirmación, luego borra todas las entradas si el usuario confirma.

Si alguien necesita el código como ejemplo, con gusto lo enviaré.

Mi mecánica se puede modificar con bastante facilidad para proporcionar un mecanismo para las eliminaciones selectivas según los criterios si es necesario (por fecha, por código de estado, etc.).

El punto de mi respuesta aquí es que podría proporcionar la funcionalidad de eliminación por su cuenta Y no copiar el código fuente abierto del proyecto Elmah.

+0

Ya no usa la versión basada en XML, en su lugar optó por usar SQLServer. –

+0

¿Cómo obtuvo la ruta de la carpeta de registro desde la configuración de Elmah? – Rumplin

+0

¿Alguna vez este código terminó en algún lugar visible para el público? ? Una esencia o github? –

1

Al menos dentro de un proyecto MVC, puede ir al directorio App_Data/Elmah.Errors para eliminar los archivos XML de error que desea eliminar.

1

Esta secuencia de comandos SQL elimina las filas mayores de las nuevas filas "size":

declare @size INTEGER = 50; 
declare @countno INTEGER; 
SELECT @countno = count([ErrorId]) FROM [dbo].[ELMAH_Error] 
/* 
SELECT TOP (@[email protected]) 
     [ErrorId] 
     ,[TimeUtc] 
     ,[Sequence] 
    FROM [dbo].[ELMAH_Error] 
    order by [Sequence] asc 
GO 
*/ 
DELETE FROM [dbo].[ELMAH_Error] 
WHERE [ErrorId] IN (
    SELECT t.[ErrorId] FROM (
     SELECT TOP (@[email protected]) 
       [ErrorId] 
       ,[TimeUtc] 
       ,[Sequence] 
      FROM [dbo].[ELMAH_Error] 
      order by [Sequence] asc 
    ) t 
    ) 
GO 


/* 
-- Print remaining rows 
SELECT * FROM [dbo].[ELMAH_Error] 
order by [Sequence] desc 
*/ 
Cuestiones relacionadas