Tamaño máximo de archivo de LogFileAppender en Log4Net


Estoy usando Log4net desde hace un tiempo y es un marco de registro increíble, especialmente cuando está conectado a Castle.Windsor. Obstante...

Normalmente uso el rolling file appender, pero esto ha resultado en demasiados archivos de registro de los que realmente quiero, así que en su lugar, para mi último proyecto, he utilizado el LogFileAppender básico en su lugar, pero el problema es que el archivo de registro sigue creciendo (aparentemente para siempre).

¿Cómo puedo decirle al appender que no pase por encima de un tamaño fijo (y comenzar a eliminar viejos ¿registros y anexar los nuevos al archivo?

Mi configuración actual se parece a:

<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
  <file value="E:\Logs\iWater\Schedule-Dispatch-API.log"/>
  <param name="AppendToFile" value="true"/>
  <maximumFileSize value="2048KB"/>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%-16date{dd MMM HH:mm:ss} %-7level %-25.35logger{1} %message%newline"/>
  </layout>
</appender>

Parece que el atributo maximumFileSize no está siendo respetado. Alguna solución?

Alternativamente, ¿cómo puedo configurar el archivo rolling appender para que solo cree 1 archivo (nunca)?

Author: Ash, 2009-03-13

2 answers

La clase FileAppender no tiene las propiedades maxFileSize/MaximumFileSize. Solo los obtienes si usas un RollingFileAppender. Aquí hay un ejemplo que limitará su archivo a un tamaño máximo fijo, sin copias de seguridad (establezca maxSizeRollBackups en 0). Tenga en cuenta que cuando el archivo alcanza su tamaño máximo, se trunca (básicamente elimina todo el registro existente y comienza de nuevo):

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="log.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="0" />
    <maximumFileSize value="10MB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
</appender>
 56
Author: Andy White,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-13 02:40:55

El LogFileAppender no admite limitar el tamaño del archivo de salida (al menos en las referencias que puedo encontrar). Para limitar el tamaño del archivo, utilice RollingFileAppender y roll on Size y establezca el límite de tamaño del archivo.

Para limitar el número de archivos roll over use el atributo MaxSizeRollBackups

 2
Author: Mitch Wheat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-13 02:18:26