ejemplo - log4net logmanager
AƱada la fecha actual al archivo de registro con Log4Net (5)
Si desea utilizar un sufijo .log (para generar un archivo como myLogPrefix.20160309.log) use:
<appender name="GeofenceFileAppender" type="log4net.Appender.RollingFileAppender">
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<file type="log4net.Util.PatternString" value="C://Logs//myLogPrefix" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value=".yyyyMMdd.lo''g''" />
<staticLogFileName value ="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger – %message%newline" />
</layout>
</appender>
Las trampas son staticLogFileName = false
que le permite generar rollups sobre la marcha (en lugar de tener que reiniciar el servicio / server) y la incómoda ''g''
en el datepattern
ya que g
es un personaje mágico en datePattern
. No hay buena documentación en el sitio de log4net para estudiar esto, por lo que en realidad es sabiduría obtenida de prueba y error y recorriendo las experiencias de otras personas.
Todo lo que quiero hacer es agregar la fecha y hora actual a mi archivo de registro, por ejemplo:
"export_(Wed_Feb_21_2009_at_1_36_41PM)"
Aquí está mi configuración actual de mi app.config
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="c:/export.txt" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message %stackTrace%newline" />
</layout>
</appender>
¿Es posible agregar la fecha a mi archivo de registro, o es una de esas cosas que debo hacer en el código y no en la configuración?
Use StaticLogFileName :
<param name="StaticLogFileName" value="true"/>
Agregue lo siguiente a su archivo de configuración
<appender name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net">
<param name="File" value="c://ProjectX//Log//log.txt"/>
<param name="AppendToFile" value="true"/>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<param name="RollingStyle" value="Date"/>
<param name="DatePattern" value="yyyy.MM.dd"/>
<param name="StaticLogFileName" value="true"/>
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline"/>
</layout>
</appender>
Para aquellos que están interesados, aquí está la solución:
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="C://Users//chris//Documents//log_.txt"/>
<param name="RollingStyle" value="Date"/>
<param name="DatePattern" value="_(yyyy.MM.dd-hh_mm_ss)"/>
<param name="StaticLogFileName" value="false"/>
<maximumFileSize value="100KB" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message %stackTrace%newline" />
</layout>
</appender>
y la prueba unitaria que verifica esto:
[Test]
public void TestLogger()
{
logger.Info("Start Log");
for (int i = 0; i < 2500; i++)
{
logger.Info(i);
}
logger.Info("End Log Log");
}
Produce el siguiente resultado:
log_.txt_(2009.02.19-01_16_34)
No realmente lo que quería, pero mejor de lo que tenía antes.
Para producir un nombre de archivo como:
log_2013-12-19.txt
hacer cambios
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="log_"/>
<param name="RollingStyle" value="Date"/>
<param name="DatePattern" value="yyyy-MM-dd./tx/t" />
<param name="StaticLogFileName" value="false"/>
</appender>
Por favor, observe el parámetro "DatePattern" donde. / Tx / t hace que la extensión del nombre de archivo .txt. Si proporciona .txt en lugar de. / Tx / t, esto guardará el nombre del archivo con la extensión .PxP si la hora es PM o .AxA en el caso de AM. así que utilicé / t para forzar a escribir caracteres en lugar de patrones. También se puede agregar tiempo y el patrón de tiempo que sea necesario.
Entonces, esto puede ser realmente lo que Philipp M quería.