NLog规则排序

时间:2015-08-06 15:34:16

标签: .net logging namespaces nlog

我已经看到了一些从特定命名空间中抑制日志的示例,但它们似乎都抑制了除了之外的所有命名空间而不是相反的方式(那是对的比如说,"给我增强了这个命名空间的日志记录并禁止其他所有内容"等等。

有人请解释为什么以下配置不会禁止My.Namespace命名空间中的记录器吗?目标是确保My.Namespace命名空间中的任何记录器仅记录 错误,而其他所有记录都不受影响。

<configSections>
  <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" />
</configSections>

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <targets async="true">
    <target name="console" xsi:type="Console" layout="${level} ${message}" />
  </targets>

  <rules>
    <logger name="My.Namespace.*" minlevel="Error" writeTo="console" final="true" />
    <logger name="*" minlevel="Debug" writeTo="console" />
  </rules>
</nlog>

1 个答案:

答案 0 :(得分:0)

虽然我认为能够为命名空间抑制设置一揽子规则会更清楚,但我已设法使用以下配置:

<targets async="true">
  <target xsi:type="Console" name="console" layout="${longdate} ${level} ${message}" />
</targets>

<rules>
  <!-- Anything less or equal to DEBUG, don't write to anything (no target) -->
  <logger name="My.Namespace.*" maxlevel="Debug" final="true" />

  <!-- Anything greater or equal to INFO, write to the console target -->
  <logger name="My.Namespace.*" minlevel="Info" writeTo="console" final="true" />
  <logger name="*" minlevel="Debug" writeTo="console" />
</rules>