0

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>节点的全部内容

我做错了什么?

4

1 回答 1

1

您有一些错误:您丢失namespaces了转换文件并编写了tag要交换的错误 xml。所以很容易修复:

<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>
于 2017-08-30T15:22:14.163 回答