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

.NET 6 NLog配置问题:Microsoft.Extensions.*日志重复写入其他文件

修复NLog日志分流问题

问题出在当前规则的日志名称匹配范围不足:

  • 原规则name="Microsoft.Extensions.*"仅能匹配以Microsoft.Extensions.(末尾带点)为前缀的日志名称
  • 部分Microsoft.Extensions相关日志的logger名称为Microsoft.Extensions(不带末尾的点),这类日志会绕过第一个规则,被后续的*规则写入OtherLog

修复方案

调整第一个日志规则的名称匹配模式,覆盖所有以Microsoft.Extensions开头的日志,同时保留final="true"确保匹配到的日志不会被后续规则重复处理:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <!-- Define targets -->
    <targets>
        <!-- Target for Microsoft.Extensions.* namespaces -->
        <target xsi:type="File" name="MicrosoftExtensionsLog" fileName="logs/MicrosoftExtensions.log"
                layout="${longdate} ${uppercase:${level}} ${message}${exception:format=tostring}" />

        <!-- Target for other namespaces -->
        <target xsi:type="File" name="OtherLog" fileName="logs/Other.log"
                layout="${longdate} ${uppercase:${level}} ${message}${exception:format=tostring}" />
    </targets>

    <!-- Define rules -->
    <!-- 调整name为Microsoft.Extensions*,覆盖所有以Microsoft.Extensions开头的日志 -->
    <logger name="Microsoft.Extensions*" minlevel="Trace" writeTo="MicrosoftExtensionsLog" final="true" />

    <!-- Log everything else to OtherLog -->
    <logger name="*" minlevel="Trace" writeTo="OtherLog" />
</nlog>

关键说明

  • name="Microsoft.Extensions*":通配符*会匹配Microsoft.Extensions以及所有以Microsoft.Extensions.开头的子命名空间日志
  • final="true":标记此规则为最终规则,匹配到的日志不会再被后续规则处理,彻底避免重复写入

内容的提问来源于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 08:07:43