首页 > 解决方案 > nlog .netcore 关闭 microsoft INFO 级别的日志记录

问题描述

如何关闭 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>

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

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

它确实适用于 microsoft logging ,但随后会删除其他记录器的所有日志记录。

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

标签: loggingasp.net-corenlog

解决方案


如果应用了当前过滤器,则使用final=true它停止其他过滤器处理。并写"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>

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


推荐阅读