NLog:IsTraceEnabled 的意外行为

NLog: Unexpected beheavior of IsTraceEnabled

我对IsTraceEnabled的结果有些怀疑(也是等价的函数IsDebugEnabled...)。

如果我调用 NLog.LogManager.GetLogger("TEST") 而不是收到意外响应 true

<rules>
    <!-- add your logging rules here -->
    <logger name="TEST" minlevel="Error" writeTo="logfile" final="true"/>
    <logger name="*" minlevel="Trace" writeTo="logfile">
      <filters>
        <when condition="equals('${logger}','System.ServiceModel.MessageLogging')" action="Ignore" />
        <when condition="equals('${logger}','XPO')" action="Ignore" />
      </filters>
    </logger>
  </rules>

有人知道我做错了什么吗?

final 属性与 (min)level 规则和名称 (filter) 结合应用。

所以在你的情况下:

 <logger name="TEST" minlevel="Error" writeTo="logfile" final="true"/>

如果记录器是 "TEST" 并且最低级别是错误,则写入日志文件并标记为最终。

由于您的 logevent 是作为调试编写的,因此它不匹配第一条规则,但它确实匹配第二条规则。

<logger name="*" minlevel="Trace" writeTo="logfile">
   ...
</logger>