Wie machen Nlog eine Datei mit dem Datum archivieren, wenn die Protokollierung stattfand

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

  •  06-07-2019
  •  | 
  •  

Frage

Wir verwenden Nlog als unser Logging-Framework, und ich kann nicht einen Weg zu Archivdateien, wie ich will finden. Ich möchte das Datum haben, wenn die Protokollierung in der Protokolldatei Namen hat.
Ex Alle Protokollierung, die von 2009-10-01 00:00 -> 2009-10-01:23:59 happend sollte in Log.2009-10-01.log platziert werden. Aber alle Protokolle für diesen Tag sollte für Tailing und so in Log.log platziert werden.

Die aktuelle NLog.config, die ich wie folgt aussehen verwenden.

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

Dies ist jedoch legt das Datum in der Log-Datei zu dem Zeitpunkt, wenn die neue Logdatei erstellt wird. Welche Frustration führen, wenn Sie später Protokolle lesen möchten.

Es scheint auch, wie ich atleast ein # in der archiveFileName haben, die ich eher nicht. Wenn Sie also eine Lösung für das bekommen auch würde ich doppelt so dankbar sein =)

War es hilfreich?

Lösung

Nur für den Fall, wenn jemand noch eine Lösung braucht - die angeforderte Funktion NLog kürzlich hinzugefügt: https://github.com/NLog/NLog/pull/241 , aber es ist noch nicht verfügbar von Nuget

Andere Tipps

Wahrscheinlich zu spät, Ihnen zu helfen, aber ich glaube, alles, was Sie tun müssen, ist das Datum im Dateinamen enthalten die Datum Layout-Renderer mit dem richtigen Datumsformat . Durch die Einbeziehung des Datums, müssen Sie nicht die Archivfunktionen angeben. Wenn das Datum ändert, wird automatisch eine neue Datei erstellt werden.

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

Vielleicht ist das, was Sie brauchen, Täglich Ordner mit der Datei log.log in it

<target xsi:type="File" name="file1" fileName="${basedir}/logs/Log.log"
        layout="${longdate} ${uppercase:${level}} ${message}" />
</targets>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top