2010-11-23 22 views
18

Estoy usando log4net RollingFileAppender en un programa de servicio de Windows escrito en C#. La cantidad y el tamaño de los archivos en el directorio de registros crece demasiado rápido, es necesario limpiarlos. La configuración es el siguiente:¿Log4Net puede eliminar archivos de registro automáticamente?

<appender name="Rolling Log" type="log4net.Appender.RollingFileAppender"> 
<file value="..\logs\MyProgram.%cs{instanceName}.log" /> 
<appendToFile value="true" /> 
<rollingStyle value="Composite" /> 
<datePattern value=".yyyy-MM-dd.lo\g" /> 
<maxSizeRollBackups value="10" /> 
<maximumFileSize value="150MB" /> 
<layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date [%-5level] %property{remoteUser} [%threadIdentity] %type{1}.%method - %message%newline%exception" /> 
</layout> 

que sólo quieren mantener los 30 días de registros. ¿Cómo puedo configurar log4net para borrar los registros automáticamente? Si no está disponible a través de log4net, ¿qué soluciones tendría?

Gracias de antemano.

Respuesta

-1

This debe proporcionar alguna ayuda. Busque la sección RollingFileAppender

+3

Él ya está utilizando RollingFileAppender, y no hay información en esta documentación sobre si puede hacer esto o no. – steinar

+1

No hay nada que hacer. –

8

Aquí es otra cuestión a partir de ahora de manera que pide esencialmente la misma cosa: Log4Net: set Max backup files on RollingFileAppender with rolling Date

El consenso fue que log4net no lo soporta directamente. Un cartel dice que se ha implementado en el repositorio de código fuente de log4net, pero aún no se ha lanzado. Otro poster muestra algún código que usa para limpiar archivos viejos periódicamente.

+0

Esta opción me parece atractiva porque parece más fácil que anular RollingFileAppender. Ahora planeo agregar un trabajo de mantenimiento de registro, desencadenado por el programador como Quartz.Net. – tonyjy

+1

Pensé que @jeff tenía una solución bastante buena en su respuesta: http://stackoverflow.com/questions/95286/log4net-set-max-backup-files-on-rollingfileappender-with-rolling-date/2916628#2916628 . Comprobando esencialmente el inicio de la aplicación para ver si era el momento de eliminar un archivo (o archivos) o no. Si su aplicación no se ejecuta demasiado tiempo (es decir, no más de 30 días a la vez), entonces su enfoque podría ser suficiente. – wageoghe

4

Estoy bastante seguro de que no se puede hacer con el appender existente, aunque no puedo confirmarlo.

Sin embargo, veo dos opciones:

  1. Crear su propio appender, la subclasificación RollingFileAppender (o, si desea más control, subclase FileAppender). Luego cambie su archivo de configuración para usar ese appender (cambie el elemento appender).
  2. Cree un archivo .bat que elimine archivos de más de x días (consulte: Batch file to delete files older than N days). A continuación, cree una tarea en Windows (http://support.microsoft.com/kb/308569) que ejecute este archivo bat, p. Ej. cada día.
+1

Me gusta el primer acercamiento mejor. El segundo enfoque parece requerir más en la implementación que mi proceso actual y no es fácil de seguir. – tonyjy

Cuestiones relacionadas