web-dev-qa-db-fra.com

Connexion de plusieurs fichiers à l'aide de Nlog

J'utilise NLog à des fins de journalisation.

Mon code est le suivant:

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

  <!-- make sure to set 'Copy To Output Directory' option for this file -->
  <!-- go to http://nlog-project.org/wiki/Configuration_file for more information -->

  <targets>
    <target
      name="logfile"
      xsi:type="File"
      layout="${message}"
      fileName="${basedir}../Data/debugLog1.txt"
      archiveAboveSize ="5000000"
      maxArchiveFiles="2"/>
  </targets>

  <rules>
    <logger name="*" minlevel="Trace" writeTo="logfile" />
  </rules>
</nlog>

Je connecte des données dans debugLog1.txt. Maintenant, à partir d'un autre emplacement dans le projet, je veux également enregistrer des données, mais ces données sont d'un autre type, donc je veux faire un debugLog2.txt et y enregistrer les données. Comment puis-je modifier mon code ci-dessus pour ce faire

28
user3061597

Je pense que vous devez définir un autre enregistreur.

<logger name="SpecialLogger" minlevel="Trace" writeTo="logfile2" />

Et puis dans cet autre emplacement dans le journal du projet:

var logger = LogManager.GetLogger("SpecialLogger");
35
Alexander Burov

Si vous souhaitez qu'un fichier séparé enregistre les informations d'une autre partie de votre programme, vous pouvez ajouter un enregistreur et une autre cible.

Par exemple, si vous avez un programme qui exécute deux tâches différentes et que vous souhaitez enregistrer ces tâches séparément, vous pouvez effectuer les opérations suivantes

<targets>
  <target
    name="task1File"
    xsi:type="File"
    layout="${message}"
    fileName="${basedir}../Data/debugLog1.txt"
    archiveAboveSize ="5000000"
    maxArchiveFiles="2"/>
  <target
    name="task2File"
    xsi:type="File"
    layout="${message}"
    fileName="${basedir}../Data/debugLog2.txt"
    archiveAboveSize ="5000000"
    maxArchiveFiles="2"/>
</targets>

<rules>
  <logger name="task1Logger" minlevel="Trace" writeTo="task1File" />
  <logger name="task2Logger" minlevel="Trace" writeTo="task2File" />
</rules>

Ensuite, dans votre programme, accédez-y avec:

var task1Logger = NLog.LogManager.GetLogger("task1Logger")
var task2Logger = NLog.LogManager.GetLogger("task2Logger")
37
nahammel

Veuillez noter que vous pouvez utiliser des rendus de mise en page dans le nom de fichier (même rendus de mise en page personnalisés ), ce qui créera également plusieurs fichiers:

 <target
      name="logfile"
      xsi:type="File"
      layout="${message}"
      fileName="${basedir}../Data/${level}.txt" 
      ...
   />

Dans cet exemple, il s'agit d'un fichier journal pour chaque niveau de journal (fatal, error, warn, info, debug, trace)

1
Julian