Pregunta

Estoy configurando log4net para usar un RollingFileAppender compuesto de modo que el archivo actual siempre se llame logfile.log y todos los archivos subsiguientes se llamen logfile-YYYY.MM.dd.seq.log donde seq es el número de secuencia si un registro supera un cierto tamaño en un solo día. Desafortunadamente, he tenido muy poco éxito en la configuración de dicha configuración.

Editar:

Mi configuración actual se pega a continuación. Se ha actualizado en base a varias respuestas que me acercan lo suficiente a mis necesidades. Esto genera archivos con el 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, configuración

<staticLogFileName value="false"/>

a verdadero hace que el registrador no escriba ningún archivo.

¿Fue útil?

Solución

Usamos lo 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

Otros consejos

Según el código fuente de log4net RollingFileAppender:

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;
}

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

Intenta establecer esta propiedad en verdadero:

preserveLogFileNameExtension value = " true "

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

Ten en cuenta que en este caso el

            <maxSizeRollBackups value="10"/>

será ignorado.

Consulte este answer a una pregunta log4net similar

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top