首页 > 解决方案 > NLog 禁用特定记录器 - 真实

问题描述

NLog 4.6.6

我已经尝试了一切来禁用特定的记录器,但无法让它工作。我想知道这是否是 NLog 中的错误。基于文档

还有一层,关。由于它是最高值并且不用于条目,因此在用作最低日志级别时会禁用日志记录。

和:

如果一个规则被标记为最终并包含任何级别声明属性,最终属性仅适用于指定级别。

因此,如果我执行互联网推荐的路线(即使是这个 SO 答案),它仍然会被记录。

<logger name="Example.*" minlevel="Off" final="true" />
<logger name="*" minlevel="Trace" writeTo="file" />

将记录器显示为禁用的答案很重要——为了短路昂贵的调试代码——而不仅仅是将其转储到Null目标中。

标签: nlog

解决方案


在示例中的问题中链接的文档稍远一点,有这样的:

<logger name="Name.Space.*" minlevel="Debug" maxlevel="Error" final="true" />
<logger name="*" writeTo="f1" />

配置为忽略来自 Name.Space 命名空间中级别介于 Debug 和 Error(即 Debug、Info、Warn、Error)之间的任何类的消息。第一条规则选择记录器,但由于没有 writeTo,因此不会记录这些消息。而且,由于该规则包含“final=true”,因此最后一条规则不适用于匹配第一条规则的记录器。

我尝试了以下方法并且成功了:

<logger name="Example.*" minlevel="Trace" final="true" />
<logger name="*" minlevel="Trace" writeTo="file" />

关键是将最低级别 ( Trace) 指定为minlevel,而不是Off。这符合文档所说的规则。

我猜这已经改变了版本,因此造成了混乱。


推荐阅读