Comment faire en sorte que Nlog archive un fichier avec la date à laquelle la journalisation a eu lieu

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

  •  06-07-2019
  •  | 
  •  

Question

Nous utilisons Nlog comme cadre de journalisation et je ne parviens pas à archiver les fichiers comme je le souhaite. J'aimerais connaître la date de la journalisation dans le nom du fichier de journalisation.
Ex. Toutes les journalisations issues de 2009-10-01 00:00 - > 2009-10-01: 23: 59 doit être placé dans Log.2009-10-01.log . Cependant, tous les journaux de ce jour doivent être placés dans Log.log pour les fins de suivi et autres.

Le fichier NLog.config que j'utilise actuellement ressemble à ceci.

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

Toutefois, ceci fixe la date dans le fichier journal à la date de création du nouveau fichier journal. Ce qui cause de la frustration lorsque vous souhaitez lire les journaux plus tard.

Il semble également que je dois avoir au moins un # dans le nomFichierarchique, ce que je préfère. Donc, si vous avez une solution pour cela, je serais aussi deux fois plus reconnaissant =)

Était-ce utile?

La solution

Juste au cas où quelqu'un aurait encore besoin d'une solution - une fonctionnalité demandée a été ajoutée à NLog récemment: https://github.com/NLog/NLog/pull/241 , mais il n'est toujours pas disponible par Nuget

Autres conseils

Probablement trop tard pour vous aider, mais je pense que tout ce que vous avez à faire est d’inclure la date dans le nom du fichier à l’aide de rendu de présentation de la date avec le format de date approprié . En incluant la date, vous n'avez pas besoin de spécifier les fonctionnalités d'archivage. Lorsque la date change, un nouveau fichier est automatiquement créé.

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

Peut-être que c'est ce dont vous avez besoin, Dossier quotidien contenant le fichier Log.log

<target xsi:type="File" name="file1" fileName="${basedir}/logs/Log.log"
        layout="${longdate} ${uppercase:${level}} ${message}" />
</targets>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top