log4net un archivo por ejecución
Necesito que mi aplicación cree un archivo de registro cada vez que se ejecute.
Mi formato preferido sería App.registro.aaaa-MM-dd_HH-mm-ss . Si eso no es posible, me conformaría con Aplicación.registro.aaaa-MM-dd.contador
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 basado en la fecha y la hora.
3 answers
Asumo que la aplicación debe crear solo un archivo de registro cada vez que se ejecuta, por lo que no necesita un agregado de archivos rodantes (aunque mi solución también se aplicaría a los agregadores de archivos rodantes):
<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 su propio diseño y otras configuraciones para el archivo appender.)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-01 14:28:39
También tenga en cuenta que puede establecer su estilo de balanceo como
rollingstyle="Once"
Y creará un nuevo archivo cada vez que se ejecute. Si staticLogFileName
se establece en true (por ejemplo, logname.log
) los registros anteriores se establece en logname.log.1
, logname.log.2
, etc.
El número de archivos guardados antes de sobrescribir el más antiguo (digamos, 10) se puede controlar configurando
maxSizeRollBackups="10"
Editar:
Mi config, que crea un registro con marca de fecha por ejecución (a menos que exista uno, en cuyo caso sigue .1
regla, 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 si necesito appendToFile="false"
como los documentos dicen que se hace automáticamente cuando se usa rollingStyle="Once"
, pero esto lo hace más claro en cualquier caso.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-04 14:14:53
Está documentado desde apache en los documentos de log4net en:
Https://logging.apache.org/log4net/release/config-examples.html
Ctrl + f para "por 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>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-23 12:31:30