Cómo hacer que Nlog archive sea un archivo con la fecha en que se realizó el registro


Estamos usando Nlog como nuestro marco de registro y no puedo encontrar una manera de archivar archivos de la manera que quiero. Me gustaría tener la fecha de cuando se llevó a cabo el registro en el nombre del archivo de registro.
Ex Todos los registros que ocurran desde 2009-10-01 00:00 -> 2009-10-01:23:59 deben colocarse en Log.2009-10-01.log. Pero todos los troncos para este día deben colocarse en Log.log para la cola y demás.

El NLog actual.la configuración que utilizo se ve así.

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
  <extensions>
    <add assembly="My.Awesome.LoggingExentions"/>
  </extensions>
    <targets>
        <target name="file1" xsi:type="File"
              fileName="${basedir}/Logs/Log.log"
              layout="${longdate} ${level:uppercase=true:padding=5} ${session} ${storeid} ${msisdn} - ${logger:shortName=true} - ${message} ${exception:format=tostring}"
              archiveEvery="Day"
              archiveFileName="${basedir}/Logs/Log${shortdate}-{#}.log"
              archiveNumbering="Sequence"
              maxArchiveFiles="99999"
              keepFileOpen="true"
            />
    </targets>
  <rules>
      <logger name="*" minlevel="Trace" writeTo="file1" />
  </rules>
</nlog>

Esto sin embargo establece la fecha en el archivo de registro a la fecha en que el nuevo se crea el archivo de registro. Que causan frustración cuando desea leer los registros más tarde.

También parece que tengo que tener al menos un # en el archiveFileName, que prefiero no. Así que si tienes una solución para que también sería el doble de agradecido =)

 25
Author: Carl Bergquist, 2009-10-28

3 answers

Por si acaso si alguien todavía necesita una solución feature la característica solicitada se ha agregado recientemente a NLog: https://github.com/NLog/NLog/pull/241 , pero todavía no está disponible por Nuget

 7
Author: the_joric,
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-09-25 09:19:31

Probablemente sea demasiado tarde para ayudarlo, pero creo que todo lo que necesita hacer es incluir la fecha en el nombre del archivo utilizando el renderizador de diseño de fecha con el formato de fecha apropiado. Al incluir la fecha, no es necesario especificar las características de archivo. Cuando la fecha cambie, se creará automáticamente un nuevo archivo.

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
  <extensions>
    <add assembly="My.Awesome.LoggingExentions"/>
  </extensions>
    <targets>
        <target name="file1" xsi:type="File"
                  fileName="${basedir}/Logs/${date:format=yyyy-MM-dd}.log"
                  layout="${longdate} ${level:uppercase=true:padding=5} ${session} ${storeid} ${msisdn} - ${logger:shortName=true} - ${message} ${exception:format=tostring}"
                  keepFileOpen="true"
                />
    </targets>
  <rules>
      <logger name="*" minlevel="Trace" writeTo="file1" />
  </rules>
</nlog>
 44
Author: Brian,
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
2010-06-07 23:56:30

Tal vez esto es lo que necesitas, Carpeta diaria con el registro de archivos.iniciar sesión

<target xsi:type="File" name="file1" fileName="${basedir}/logs/Log.log"
        layout="${longdate} ${uppercase:${level}} ${message}" />
</targets>
 0
Author: Shoham,
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-10-08 12:08:33