NLog - 2 отдельных файла журнала - Как писать в один или другой - PullRequest
1 голос
/ 16 июня 2020

Я хочу явно записывать в 2 разных файла журнала . В зависимости от метода или типа операций.

Как это сделать?

Я видел следующее сообщение StackOverFlow Наличие регистраторов NLog с другой конфигурацией

Как настроить NLog? Какой код мне тоже нужен, чтобы я мог писать в один файл или другой? используя код вида: log.Error("My Big Error");

Сообщение содержит следующее

<targets> 
    <target name="f1" xsi:type="File" fileName="${logger}.txt" />
    <target name="f2" xsi:type="File" fileName="${shortdate}.txt" />
</targets>

Итак, если это «общая ошибка», я хочу написать на f1 . Если это ошибка операции с файлом, я хочу написать f2

thx заранее

1 Ответ

3 голосов
/ 16 июня 2020

В конфигурации NLog вам необходимо установить некоторые правила для записи в цели (иначе ничего не будет записано). В эти правила вы можете добавлять фильтры и условия.

Простой пример

Например:

<rules>
  <logger name="Logger1" writeTo="f1" />
  <logger name="Logger2" writeTo="f2" />
</rules>

Атрибут name здесь является фильтром, поэтому первое правило означает: записать в f1, если имя регистратора равно "Logger1". Правила обрабатываются сверху вниз.

Таким образом, при вызове LogManager.GetLogger("Logger1").Info("My message") это будет писать в цель f1, а LogManager.GetLogger("Logger2").Info("My message") будет писать в цель f2.

GetCurrentClassLogger

При использовании LogManager.GetCurrentClassLogger() , имя регистратора состоит из имени текущего класса и пространства имен, например «MyNameSpace.MyClass». Это означает, что вы можете настроить атрибут name на name="MyNameSpace.MyClass" или name="*.MyClass" для соответствия.

Final

Вы также можете написать это:

<rules>
  <logger name="Logger1" writeTo="f1" final="true" />
  <logger name="*" writeTo="f2" />
</rules>

Это будет записывать события Logger1 в f1, а другие - в f2. Вам, вероятно, понадобится атрибут filter, иначе события Logger1 будут записываться в f2 - а это не всегда то, что вам нужно.

Другие правила фильтрации

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

...