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.

 42
Author: New Alexandria, 2010-06-16

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.)

 54
Author: Stefan Egli,
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.

 31
Author: Alex,
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>
 0
Author: Jordan Stefanelli,
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