nlog .netcore отключить регистрацию на уровне Microsoft INFO - PullRequest
0 голосов
/ 21 мая 2018

Как я могу отключить ведение журнала уровня информации Microsoft в nlog / .netcore?

Я все еще хочу вести запись информации для других моих регистраторов

У меня сейчас есть:

  <rules>
    <logger name="Microsoft.*" minlevel="Error" writeTo="nxlog_json" />
    <logger name="Microsoft.*" minlevel="Error" writeTo="human_text_file" />
    <logger name="*" minlevel="Info" writeTo="nxlog_json" />
    <logger name="*" minlevel="Info" writeTo="human_text_file" />
  </rules>

Это не работает, если я удаляю:

<logger name="*" minlevel="Info" writeTo="nxlog_json" />
<logger name="*" minlevel="Info" writeTo="human_text_file" />

Это работает для регистрации в Microsoft, но затем удаляет все записи для других регистраторов.

Чего мне не хватает?Я предполагаю, что logger name = "" переопределяет первые записи для Microsoft. , но я не хочу явно указывать имена других моих регистраторов.

1 Ответ

0 голосов
/ 22 мая 2018

Используйте final=true, который останавливает обработку других фильтров, если применяется текущий фильтр.И напишите "blackHole" target, чтобы проглотить сообщения:

<targets>
  <target xsi:type="Null" name="blackHole" />
</targets>
<rules>
  <logger name="Microsoft.*" minlevel="Info" writeTo="blackHole" final="true" />
  <logger name="*" minlevel="Info" writeTo="nxlog_json" />
  <logger name="*" minlevel="Info" writeTo="human_text_file" />
</rules>

NLog 4.5 позволяет указать пустой writeTo = ""

<rules>
  <logger name="Microsoft.*" minlevel="Info" writeTo="" final="true" />
  <logger name="*" minlevel="Info" writeTo="nxlog_json" />
  <logger name="*" minlevel="Info" writeTo="human_text_file" />
</rules>

Официальные вики: https://github.com/NLog/NLog/wiki/Filtering-log-messages#routing

...