nlog .netcore关闭Microsoft INFO级别的日志记录

use*_*887 1 logging nlog asp.net-core

如何关闭nlog / .netcore中的Microsoft信息级别日志记录?

我仍然想要其他记录器的信息记录

我目前有:

  <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>
Run Code Online (Sandbox Code Playgroud)

这不起作用,如果我删除:

<logger name="*" minlevel="Info" writeTo="nxlog_json" />
<logger name="*" minlevel="Info" writeTo="human_text_file" />
Run Code Online (Sandbox Code Playgroud)

它确实适用于Microsoft日志记录,但是随后删除了其他记录器的所有日志记录。

我想念什么?我假设记录器名称=“ ”覆盖了Microsoft的第一个条目。,但我不想显式指定其他记录器名称。

Ale*_*hev 5

使用final=true时停止其他过滤器,如果当前的过滤器applyed处理。并写入"blackHole"目标以吞下消息:

<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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

官方Wiki:https : //github.com/NLog/NLog/wiki/Filtering-log-messages#routing