Подтвердить что ты не робот

Регистрация нескольких файлов с помощью Nlog

Я использую NLog для целей ведения журнала.

Мой код выглядит следующим образом:

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

Я регистрирую данные в debugLog1.txt. Теперь из другого места в проекте я также хочу регистрировать данные, но эти данные относятся к другому поэтому я хочу сделать debugLog2.txt и записать данные в журнал. Как я могу изменить свой код выше, чтобы сделать это

4b9b3361

Ответ 1

Я думаю, вам нужно определить другой регистратор.

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

И затем в это другое место в журнале проекта:

var logger = LogManager.GetLogger("SpecialLogger");

Ответ 2

Если вы хотите, чтобы отдельный файл регистрировал информацию из другой части вашей программы, вы можете добавить регистратор и другую цель.

Например, если у вас есть программа, которая выполняет две разные задачи, и вы хотите, чтобы эти задачи выполнялись отдельно, вы могли бы сделать следующие

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

Затем в вашу программу вы получите доступ к ним:

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