Come rendere Nlog archiviare un file con la data in cui è avvenuta la registrazione

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

  •  06-07-2019
  •  | 
  •  

Domanda

Stiamo usando Nlog come nostro framework di registrazione e non riesco a trovare un modo per archiviare i file come voglio. Vorrei avere la data in cui è avvenuta la registrazione nel nome del file di registrazione.
Ex Tutte le registrazioni avvenute da 2009-10-01 00:00 - > 01/10/2009: 23: 59 deve essere inserito in Log.2009-10-01.log . Ma tutti i registri per questo giorno dovrebbero essere inseriti in Log.log per la coda e simili.

L'attuale NLog.config che utilizzo è simile al seguente.

<?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>

Ciò tuttavia imposta la data nel file di registro sulla data in cui viene creato il nuovo file di registro. Il che causa frustrazione quando si desidera leggere i registri in seguito.

Sembra anche che debba avere almeno uno # in archiveFileName, cosa che preferisco non fare. Quindi, se hai una soluzione anche per questo, sarei due volte più grato =)

È stato utile?

Soluzione

Nel caso in cui qualcuno abbia ancora bisogno di una soluzione, la funzione richiesta è stata recentemente aggiunta a NLog: https://github.com/NLog/NLog/pull/241 , ma non è ancora disponibile da Nuget

Altri suggerimenti

Probabilmente troppo tardi per aiutarti, ma credo che tutto ciò che devi fare è includere la data nel nome del file usando renderer layout data con il formato data corretto . Includendo la data, non è necessario specificare le funzionalità di archiviazione. Quando la data cambia, verrà automaticamente creato un nuovo file.

<?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>

Forse questo è ciò di cui hai bisogno, Cartella giornaliera con il file Log.log in esso

<target xsi:type="File" name="file1" fileName="${basedir}/logs/Log.log"
        layout="${longdate} ${uppercase:${level}} ${message}" />
</targets>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top