В конфигурации 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
- а это не всегда то, что вам нужно.
Другие правила фильтрации
Есть много других параметров фильтрации, например минимальный уровень, максимальный уровень, но также и более продвинутые фильтры (не только по имени регистратора). Вы можете прочитать об этом здесь