2009-10-28 9 views
24

Estamos utilizando Nlog como nuestro marco de trabajo de registro y no puedo encontrar la forma de archivar los archivos de la manera que quiero. Me gustaría tener la fecha de cuando el registro tuvo lugar en el nombre del archivo de registro.
Ex Todos los registros que ocurrieron desde 2009-10-01 00:00 -> 2009-10-01:23:59 se deben colocar en Log.2009-10-01.log. Pero todos los registros para este día deben colocarse en Log.log para rastrear y tal.Cómo hacer que Nlog archive un archivo con la fecha en que se realizó el registro

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

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

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

+1

Lamento volver a un hilo muy viejo ... pero ¿alguna vez encontró una solución a esto? –

+0

@AndrewJones Nope. Pasé a la pila elástica/logstash y kibana. –

Respuesta

8

Sólo en caso de que si alguien todavía tiene una solución - función solicitada ha sido añadido a Nlog recientemente: https://github.com/NLog/NLog/pull/241, pero todavía no está disponible por Nuget

37

Probablemente es demasiado tarde para ayudarte, pero creo que todo lo que tienes que hacer es incluir la fecha en el nombre del archivo usando el date layout renderer con la date format. Al incluir la fecha, no necesita 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> 
+0

No demasiado tarde :) Olvidé mencionar que todavía quiero que el registro activo se denomine Log.log para el seguimiento y tal. Así que esta solución es buena, pero no perfecta :) –

+0

Además, esta solución desactiva la posibilidad de auto-borrar archivos de registro antiguos ... – Verthosa

0

Tal vez esto es lo que necesita, diario carpeta con el archivo Log.log en ella

<target xsi:type="File" name="file1" fileName="${basedir}/logs/Log.log" 
     layout="${longdate} ${uppercase:${level}} ${message}" /> 
</targets> 
Cuestiones relacionadas