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

StackOverflow https://stackoverflow.com/questions/1635973

  •  06-07-2019
  •  | 
  •  

Pregunta

Estamos usando Nlog como nuestro marco de registro y no puedo encontrar una manera de archivar los archivos de la manera que quiero. Me gustaría tener la fecha de cuándo se realizó el registro en el nombre del archivo de registro.
Ej. Todos los registros que ocurrieron desde 2009-10-01 00:00 - > 2009-10-01: 23: 59 debe colocarse en Log.2009-10-01.log . Pero todos los registros para este día deben colocarse en Log.log para el seguimiento y tal.

El NLog.config actual que uso 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>

Sin embargo, esto establece la fecha en el archivo de registro a la fecha en que se crea el nuevo archivo de registro. Lo que causa frustración cuando quieres leer los registros más tarde.

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

¿Fue útil?

Solución

En caso de que alguien todavía necesite una solución, 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

Otros consejos

Probablemente sea demasiado tarde para ayudarlo, pero creo que todo lo que necesita hacer es incluir la fecha en el nombre del archivo usando renderizador de diseño de fecha con el formato de fecha apropiado . Al incluir la fecha, no necesita especificar las características del archivo. Cuando la fecha cambia, 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>

Tal vez esto es lo que necesitas, Carpeta diaria con el archivo Log.log en ella

<target xsi:type="File" name="file1" fileName="${basedir}/logs/Log.log"
        layout="${longdate} ${uppercase:${level}} ${message}" />
</targets>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top