如何在 NLog 中打开和关闭特定级别的日志记录

问题描述 投票:0回答:2

我在我的应用程序中使用 NLog。我想创建一个开关来打开和关闭特定的记录器级别。

  <rules>
    <logger name="*" minlevel="Debug" writeTo="f" />
    <logger levels="Error,Warn,Fatal,Debug,Info" name="CustomLogger" writeTo="database"/>
  </rules>

如何关闭特定记录器级别的日志记录。我不想将其从下面的行中删除。

<logger levels="Error,Warn,Fatal,Debug,Info" name="CustomLogger" writeTo="database"/>

如何使用类似以下内容打开和关闭

Info
日志记录:

internalLogLevel="Off"
logging nlog error-logging
2个回答
5
投票

添加将日志写入“黑洞”的最终规则。将此添加为第一条规则。使用

enabled
属性将其关闭/打开。

例如要禁用“信息”级别,请将其添加为

<rules>
的第一条规则:

<logger levels="Info" name="*" writeTo="blackHole" final="true" enabled="true" />

黑洞目标为

<targets>

<target name="blackHole" xsi:type="Null" />

2
投票

您可以像这样分配

GlobalThreshold

if (IsProduction)
   NLog.LogManager.GlobalThreshold = NLog.LogLevel.Info;
else
   NLog.LogManager.GlobalThreshold = NLog.LogLevel.Trace;  // No global filter

您也可以使用 NLog 布局在 NLog Logging-Rules 中进行级别过滤:

<nlog>
   <variable name="myLevel" value="Warn" />
    <rules>
      <logger minLevel="${var:myLevel}" writeTo="file" />
    </rules>
</nlog>
#if DEBUG
LogManager.Configuration.Variables["myLevel"] = "Debug";
LogManager.ReconfigExistingLoggers(); // Explicit refresh of Layouts and updates active Logger-objects
#endif

另请参阅:https://github.com/NLog/NLog/wiki/Filtering-log-messages

© www.soinside.com 2019 - 2024. All rights reserved.