logmanager ejemplo log4net config

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?



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.