使用运算符'<'时NLog中断

时间:2015-02-25 15:04:34

标签: .net visual-studio nlog

我在下面有一个配置和一个关系运算符'<'似乎没有转义,因为它输出错误XML element is not closedIn documentation他们有一个'< ='的例子,它也不起作用。什么有趣,'>'工作良好。我错过了什么吗?

<logger name="*" minlevel="Trace" writeTo="logFile">
  <filters>
    <when condition="contains('${logger}','Domain.Messaging.') and level < LogLevel.Warn" action="Ignore" />
  </filters>
</logger>

1 个答案:

答案 0 :(得分:3)

  

我错过了什么吗?

是的,您没有考虑到这是XML,其中<需要进行转义。你想要:

<logger name="*" minlevel="Trace" writeTo="logFile">
  <filters>
    <when condition="contains('${logger}','Domain.Messaging.') and level &lt; LogLevel.Warn" action="Ignore" />
  </filters>
</logger>

来自XML 1.0 specification

的第2.4节
  

&符号(&)和左尖括号(<)不得以字面形式出现,除非用作标记分隔符,或用于注释,处理指令或CDATA部分。如果在其他地方需要它们,则必须分别使用数字字符引用或字符串&amp;&lt;对其进行转义。