xml - conversionpattern - log4net logger name
¿Cómo configuro RollingFileAppender para rodar por fecha y tamaño con log4net? (4)
Soy configure log4net para usar un RollingFileAppender compuesto para que el archivo actual siempre se llame logfile.log y todos los archivos posteriores se denominen logfile-YYYY.MM.dd.seq.log donde seq es el número de secuencia si un registro excede un cierto tamaño dentro de un solo día. Desafortunadamente, he tenido muy poco éxito en configurar tal configuración.
Editar:
Mi configuración actual está pegada 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".log""/>
<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, establecer
<staticLogFileName value="false"/>
verdadero hace que el registrador no escriba ningún archivo.
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 archivos Applog.log.aaaa-MM-dd
Intente 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
De acuerdo con 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;
}
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.
Tenga en cuenta que este es el caso
<maxSizeRollBackups value="10"/>
será ignorado
Vea esta respuesta a una pregunta log4net similar