app.config 转换 - nlog 规则记录器替换不起作用

app.config transformation - nlog rules logger replace not works

App.config 我有 nlog 部分:

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

    <variable name="logDirectory" value="C:\AppsLog" />

    <targets>
      <target name="LogDebugTarget" ... />
    </targets>

    <rules>
      <logger name="LogDebug" minlevel="Debug" writeTo="LogDebugTarget" />
      <logger name="LogInfo" minlevel="Info" writeTo="LogInfoTarget" />
      <logger name="LogError" minlevel="Error" writeTo="LogErrorTarget,LogErrorTargetEmail" />
    </rules>

  </nlog>

App.debug.config我要替换:

<logger name="LogError" minlevel="Error" writeTo="LogErrorTarget,LogErrorTargetEmail" />

与:

<logger name="LogError" minlevel="Error" writeTo="LogErrorTarget" />

但其余节点未触及:

  <logger name="LogDebug" minlevel="Debug" writeTo="LogDebugTarget" />
  <logger name="LogInfo" minlevel="Info" writeTo="LogInfoTarget" />

所以在App.debug.config中我写了:

  <nlog>
    <rules>
      <add xdt:Transform="Replace" xdt:Locator="Match(name)" name="LogError" minlevel="Error" writeTo="LogErrorTarget" />
    </rules>
  </nlog>

但它不会替换任何东西 - 只留下原始 <nlog> 节点的全部内容

我做错了什么?

您有一些错误:您在转换文件中丢失了 namespaces 并且写了不正确的 xml tag 您想要交换。 所以很容易修复:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <rules>
    <logger xdt:Transform="Replace" xdt:Locator="Match(name)" name="LogError" minlevel="Error" writeTo="LogErrorTarget" />
  </rules>
</nlog>