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

时间:2017-08-30 08:06:50

标签: app-config nlog xdt-transform

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>节点的整个内容

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您遇到了一些错误:您在转换文件中丢失了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>