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

NLog规则未生效:指定ASP.NET Core组件日志仍写入数据库

问题分析与解决

你的问题出在NLog规则的匹配顺序上——NLog会按配置里的规则从上到下依次匹配,只要规则匹配且final="false",就会继续执行后续规则。

核心问题点

你配置最前面的这条通配符规则:

<logger name="*" minlevel="Info" writeTo="database,console" final="false"/>

它会匹配所有日志(包括Microsoft.AspNetCore.Routing.EndpointMiddleware的Info级日志),而且因为final="false",会继续往下执行后续规则。但这条规则已经先把日志写入数据库了,后面针对该组件的规则再怎么设置,也没法撤销已经完成的写入操作。

修正方案

把针对Microsoft.AspNetCore.Routing.EndpointMiddleware的规则移到通配符*规则的前面,明确设置只写控制台、不写入数据库,同时加上final="true"阻止后续规则执行。

修正后的关键规则顺序示例:

<rules>
  <logger name="cfm" minlevel="Info" writeTo="cfmdatabase,console" final="true"/>
  <logger name="db" minlevel="Info" writeTo="database,console" final="true"/>

  <!-- 先处理目标组件,拦截Info级日志只写控制台,阻止后续规则 -->
  <logger name="Microsoft.AspNetCore.Routing.EndpointMiddleware" minlevel="Info" writeTo="console" final="true"/>
  
  <!-- 再放通配符规则,此时目标组件的日志已经被拦截,不会触发这条规则的数据库写入 -->
  <logger name="*" minlevel="Info" writeTo="database,console" final="false"/>
  
  <!-- 其他规则按需保留,可清理重复的目标组件规则 -->
  <logger name="Microsoft.AspNetCore.SignalR" minlevel="Warn" writeTo="database,console" final="false"/>
  <logger name="Microsoft.AspNetCore.Routing.*" minlevel="Warn" writeTo="database,console" final="false"/>
  <logger name="Microsoft.AspNetCore.SignalR" minlevel="Info" writeTo="console" final="false"/>
  <logger name="Microsoft.AspNetCore.Routing.*" minlevel="Info" writeTo="console" final="false"/>
  <logger name="System.*" finalMinLevel="Warn" maxlevel="Info" final="true" />

  <!--Skip non-critical Microsoft logs and so log only own logs (BlackHole) -->
  <logger name="Microsoft.*" finalMinLevel="Warn" maxlevel="Info" final="true" />

  <logger name="Microsoft.Hosting.Lifetime" finalMinLevel="Info" minlevel="Info" final="true" />
</rules>

另外,你原来配置里重复的Microsoft.AspNetCore.Routing.EndpointMiddleware规则可以直接删掉,避免冗余。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 20:40:25