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

升级到NLog 5后带过滤规则的日志写入功能失效

问题根因

该问题是NLog 5.0版本的破坏性变更导致,与target、日志布局配置无关:

  • NLog 4.x 版本中,<filters>节点未显式指定defaultAction属性时,默认值为Log:未命中任何<when>过滤规则的日志会正常写入绑定的target,仅命中action="Ignore"规则的日志会被丢弃。
  • NLog 5.0 版本调整了这一默认逻辑:<filters>节点未显式配置defaultAction时,默认行为改为Ignore,所有未命中过滤规则的日志都会被直接丢弃。

你的配置里,绑定f常规日志文件的logger规则配置了filters但未指定defaultAction,升级后所有不匹配两条Ignore规则的Trace到Warn级别日志全被过滤,因此不会生成常规日志;绑定fe错误日志的logger规则未配置filters,不受该变更影响,所以可以正常写入。

修复方案

不需要调整其他业务配置,仅需给对应规则的<filters>节点显式添加defaultAction="Log"属性,就能完全恢复NLog 4.x版本的行为,修改后的rules节点如下:

<rules>
    <logger name="*" minlevel="Trace" maxlevel="Warn" writeTo="f" >
       <filters defaultAction="Log">
          <when condition="contains('${message}','[HTTPS]')" action="Ignore"/>
          <when condition="contains('${message}','[EmailCachingHelper]')" action="Ignore"/>
       </filters>
   </logger>
       
   <logger name="*" minlevel="Error" writeTo="fe" ></logger>
</rules>
其他升级注意事项

升级到NLog 5.0不需要额外添加全局配置,除上述过滤器默认行为变更外,其余配置逻辑和4.x版本兼容。修改配置后重启应用,常规日志文件就会正常生成,原有两条日志过滤规则也会正常生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 08:45:19