coloredconsoleappender log4net

coloredconsoleappender - log4net levels



log4net un archivo por ejecuciĆ³n (3)

Está documentado desde apache en los documentos log4net en:

https://logging.apache.org/log4net/release/config-examples.html

Ctrl + F para "ejecución de programa"

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="logfile.txt" /> <appendToFile value="false" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="-1" /> <maximumFileSize value="50GB" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout> </appender>

Necesito mi aplicación para crear un archivo de registro cada vez que se ejecuta.

Mi formato preferido sería App.log.yyyy-MM-dd_HH-mm-ss . Si eso no fuera posible, me conformaría con App.log.yyyy-MM-dd.counter

Esta es mi configuración actual de appender:

<appender name="File" type="log4net.Appender.RollingFileAppender"> <file value="App.log"/> <rollingStyle value="Date"/> <datePattern value=".yyyy-MM-dd_HH-mm-ss"/> <staticLogFileName value="false"/> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> </appender>

Pero crea un número aleatorio de archivos según la fecha y la hora.


Supongo que la aplicación debe crear solo un archivo de registro cada vez que se ejecute, por lo que no necesita un agregador de archivo rodante (aunque mi solución se aplicaría también a los agregadores de archivo rodante):

<appender name="FileAppender" type="log4net.Appender.FileAppender"> <file type="log4net.Util.PatternString" value="c:/temp/App-%date{yyyy-MM-dd_HH-mm-ss}.log" /> <appendToFile value="true" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%2thread] %-5level - %message%newline" /> </layout> </appender>

(Obviamente, puede usar otro diseño propio y otras configuraciones para el archivo appender).


También tenga en cuenta que puede configurar su estilo de rodadura como

rollingstyle="Once"

y creará un nuevo archivo cada vez que se ejecuta. Si staticLogFileName se establece en verdadero (por ejemplo, logname.log ), los registros anteriores se establecerán en logname.log.1 , logname.log.2 , etc.

La cantidad de archivos guardados antes de sobrescribir el más antiguo (por ejemplo, 10) se puede controlar configurando

maxSizeRollBackups="10"

Edición: Mi configuración, que crea un registro con marca de datos por ejecución (a menos que exista uno, en cuyo caso sigue la regla .1 , se ve así:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> <file type="log4net.Util.PatternString" value="Logs/MyLog-%date{dd-MM-yyyy}.log" /> <appendToFile value="false" /> <maxSizeRollBackups value="-1" /> <!--infinite--> <staticLogFileName value="true" /> <rollingStyle value="Once" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%-5level %date [%thread] %c{1} - %m%n" /> </layout> </appender>

No estoy 100% seguro de si necesito appendToFile="false" como dicen los documentos , se hace automáticamente cuando se usa rollingStyle="Once" , pero esto lo hace más claro en cualquier caso.