【问题标题】:NLog disable specific logger - for realNLog 禁用特定记录器 - 真实
【发布时间】:2021-02-23 17:14:11
【问题描述】:

NLog 4.6.6

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

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

和:

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

因此,如果我使用互联网推荐的路线(即使是 this SO answer),它仍然会被记录。

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

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

【问题讨论】:

标签: nlog


【解决方案1】:

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

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

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

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

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

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-30
  • 1970-01-01
  • 2011-12-21
  • 2012-02-23
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
相关资源
最近更新 更多