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>
我对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>