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

NLog调整SpecificLogger的minLevel后日志写入错误文件如何解决?

NLog日志拦截问题解决方案

问题原因

final="true" 的生效前提是当前规则匹配到日志。当你将SpecificLogger的minlevel改为Info后,Debug级日志不满足该规则的级别要求,规则不会触发,日志会继续向下匹配通配符规则(name="*"),最终被写入mainFile。

解决方案

方法一:新增拦截规则

添加一条专门匹配SpecificLogger的Debug日志的规则,不指定写入目标,同时设置final="true",直接终止后续规则匹配:

<rules>
  <!-- 拦截SpecificLogger的Debug日志,不写入任何文件 -->
  <logger name="SpecificLogger" minlevel="Debug" maxlevel="Debug" final="true" />
  <!-- 处理SpecificLogger的Info及以上级别日志 -->
  <logger name="SpecificLogger" minlevel="Info" writeTo="specificFile" final="true" />
  <!-- 处理其他所有日志的Debug及以上级别 -->
  <logger name="*" minlevel="Debug" writeTo="mainFile" />
</rules>

方法二:使用过滤器修改原有规则

保留原规则的全级别匹配,通过过滤器仅允许Info及以上级别写入specificFile,同时final="true"阻止后续规则:

<rules>
  <logger name="SpecificLogger" minlevel="Debug" writeTo="specificFile" final="true">
    <filters>
      <!-- 忽略Debug级别的日志,不写入specificFile -->
      <when condition="level &lt; LogLevel.Info" action="Ignore" />
    </filters>
  </logger>
  <logger name="*" minlevel="Debug" writeTo="mainFile" />
</rules>

两种方案都能实现你的需求:SpecificLogger的Debug日志完全不写入任何文件,Info及以上日志写入specificFile,其他日志的Debug及以上级别正常写入mainFile。

内容的提问来源于stack exchange,提问作者East of Nowhere

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 21:51:10