代码之家  ›  专栏  ›  技术社区  ›  GrahamB

nlog意外地写入日志,但限制级别较低-日志级别被忽略

  •  0
  • GrahamB  · 技术社区  · 6 年前

    我对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”获取日志程序并检查其属性时,每个日志级别都被启用,因此如果我提供调试的日志级别,那么它仍然被记录。据我所知,情况不应该是这样的。

    我认为这与我的回退记录器(name=“*”)有关,我相信“commmand”记录器上的“final=true”应该进行进一步的日志检查。

    这是在.NET核心中运行的

    我误解了这是怎么回事吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Rolf Kristensen Raúl Diego    6 年前

    也许这会奏效:

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