You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6中如何通过NLog阻止特定命名空间的日志记录

过滤NLog中Microsoft.Extensions.*命名空间的日志配置方法

要跳过所有Microsoft.Extensions.*命名空间的日志,只需在NLog.config中通过日志规则或目标过滤实现,以下是两种常用方案:

方案一:通过日志规则全局过滤

在<rules>节点中添加一条优先级更高的拒绝规则,匹配所有Microsoft.Extensions.开头的日志记录器,直接跳过后续处理:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <!-- 目标配置(比如文件输出) -->
  <targets>
    <target name="file" xsi:type="File" fileName="logs/app.log" />
  </targets>

  <rules>
    <!-- 先拒绝Microsoft.Extensions.*的日志,不写入任何目标 -->
    <logger name="Microsoft.Extensions.*" minlevel="Trace" writeTo="false" final="true" />
    
    <!-- 其他正常日志规则 -->
    <logger name="*" minlevel="Info" writeTo="file" />
  </rules>
</nlog>
  • name="Microsoft.Extensions.*":匹配所有以Microsoft.Extensions.开头的日志记录器
  • writeTo="false":不写入任何目标
  • final="true":匹配后不再执行后续规则,确保该日志被彻底跳过

方案二:针对特定日志目标过滤

如果只想让某个特定文件目标跳过这类日志,可以在<target>节点中添加<filters>配置:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <targets>
    <target name="file" xsi:type="File" fileName="logs/app.log">
      <!-- 添加过滤器,拒绝Microsoft.Extensions.*的日志 -->
      <filters>
        <when condition="starts-with('${logger}','Microsoft.Extensions.')" action="Ignore" />
      </filters>
    </target>
  </targets>

  <rules>
    <logger name="*" minlevel="Info" writeTo="file" />
  </rules>
</nlog>
  • starts-with('${logger}','Microsoft.Extensions.'):判断日志记录器名称是否以指定前缀开头
  • action="Ignore":忽略符合条件的日志,不写入该目标

两种方案都能实现需求,方案一适合全局过滤所有目标,方案二更灵活,可针对单个目标配置。

内容的提问来源于stack exchange,提问作者ashlar64

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 05:45:04