2008-10-28 38 views
20

estoy configurar log4net utilizar un compuesto RollingFileAppender para que el archivo actual siempre se denomina logfile.log y todos los archivos siguientes se crea archivo de registro -YYYY.MM.dd.seq.log donde siguientes es la secuencia número si un registro excede un cierto tamaño en un solo día. Desafortunadamente, he tenido muy poco éxito en configurar tal configuración.¿Cómo configuro RollingFileAppender para que se despliegue por fecha y tamaño con log4net?

Editar:

Mi configuración actual se pega a continuación. Se ha actualizado en base a varias respuestas que me acercan lo suficiente para mis necesidades. Esto genera archivos del formato: logfile_YYYY.MM.dd.log.seq

<log4net> 

    <root> 
     <level value="DEBUG" /> 
     <appender-ref ref="RollingFileAppender" /> 
    </root> 

    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="logs\\logfile"/> 
     <staticLogFileName value="false"/> 
     <appendToFile value="true"/> 
     <rollingStyle value="Composite"/> 
     <datePattern value="_yyyy.MM.dd&quot;.log&quot;"/> 
     <maxSizeRollBackups value="10"/> 
     <maximumFileSize value="75KB"/> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/> 
     </layout> 
     <filter type="log4net.Filter.LevelRangeFilter"> 
      <param name="LevelMin" value="DEBUG" /> 
      <param name="LevelMax" value="FATAL" /> 
     </filter> 
    </appender> 

</log4net> 

Una nota interesante, el establecimiento de

<staticLogFileName value="false"/> 

a la verdadera causa que el registrador no escribir ningún archivo.

Respuesta

13

se utiliza la siguiente (en Log4J):

<appender name="roller" class="org.apache.log4j.DailyRollingFileAppender"> 
    <param name="File" value="Applog.log"/> 
    <param name="DatePattern" value="'.'yyyy-MM-dd"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="[slf5s.start]%d{DATE}[slf5s.DATE]%n%p[slf5s.PRIORITY]%n%x[slf5s.NDC]%n%t[slf5s.THREAD]%n%c[slf5s.CATEGORY]%n%l[slf5s.LOCATION]%n%m[slf5s.MESSAGE]%n%n"/> 
    </layout> 
</appender> 

Esto nos da Applog.log.yyyy-MM-dd archivos

+1

Según la documentación de log4j: se ha observado que DailyRollingFileAppender presenta problemas de sincronización y pérdida de datos. El complemento adicional log4j incluye alternativas que se deben considerar para nuevas implementaciones y que se analizan en la documentación de org.apache.log4j.rolling.RollingFileAppender. –

4

Según log4net RollingFileAppender código fuente:

protected string GetNextOutputFileName(string fileName) 
{ 
    if (!m_staticLogFileName) 
    { 
     fileName = fileName.Trim(); 

     if (m_rollDate) 
     { 
      fileName = fileName + m_now.ToString(m_datePattern, System.Globalization.DateTimeFormatInfo.InvariantInfo); 
     } 

     if (m_countDirection >= 0) 
     { 
      fileName = fileName + '.' + m_curSizeRollBackups; 
     } 
    } 

    return fileName; 
} 

Así que supongo que no es posible generar un archivo de registro con el nombre que necesita. Creo que es algo así como logfileYYYY-MM-dd.n.log o similar.

+0

@Ryan, Leandro: También parece que no hay una forma sencilla de anular este comportamiento. 'GetNextOutputFileName' no es virtual, y otros métodos que lo llaman hacen referencia a variables privadas, por lo que no puede simplemente copiar su código y reemplazar la llamada. Creo que lo mejor que puedes hacer es tener un nombre de archivo único cada vez, usando algo así como la opción de patrón de fecha que terminaste usando. –

0

en cuenta que es este caso el

  <maxSizeRollBackups value="10"/> 

serán ignorados.

ver este answer a una pregunta log4net similares

1

Trate de establecer esta propiedad en true:

valor preserveLogFileNameExtension = "true"

creo que este truco le ayudará! Sin embargo, la propiedad preserveLogFileNameExtension necesita la última versión de log4net, puede encontrarla aquí: logging.apache.org/log4net/download.html

Cuestiones relacionadas