NLog 意外写入具有较低级别限制的日志 - 日志级别被忽略

NLog unexpectedly writing to log with lower level restriction - log level being ignored

我对 NLog 日志记录级别回退感到困惑。我有这套规则:

  <rules>
      <!-- Send Microsoft into a black hole to hide their logs -->
      <logger name="Microsoft.*" maxLevel="Warn" final="true" />
      <logger name="commands" minlevel="Info" writeTo="logger" final="true" />
    <logger name="*" minlevel="Trace" writeTo="logger" />
    <logger name="exception" minlevel="Error" writeTo="publisher" final="true" />
  </rules>

我希望发生的是,任何记录器名称为 "commands" 的内容都只会在信息级别或更高级别记录。无论如何都会记录任何其他记录器名称。

发生的事情是,当我获取 "commands" 的记录器并检查其属性时,每个日志级别都已启用,因此如果我提供调试日志级别,那么它仍然会被记录。据我了解,情况不应该是这样。

我认为这与我的后备记录器(名称 =“*”)有关,我相信 "commmand" 记录器上的 "final=true" 应该进行任何进一步的记录检查。

这是 .net 核心中的 运行

我是不是误解了它的工作原理?

也许这会奏效:

  <rules>
    <!-- Send Microsoft into a black hole to hide their logs -->
    <logger name="Microsoft.*" maxLevel="Warn" final="true" />
    <logger name="commands" maxLevel="Debug" final="true" />

    <logger name="commands" minlevel="Info" writeTo="logger" final="true" />
    <logger name="*" minlevel="Trace" writeTo="logger" />
    <logger name="exception" minlevel="Error" writeTo="publisher" final="true" />
  </rules>