我在我的应用程序中使用 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"
添加将日志写入“黑洞”的最终规则。将此添加为第一条规则。使用
enabled
属性将其关闭/打开。
例如要禁用“信息”级别,请将其添加为
<rules>
的第一条规则:
<logger levels="Info" name="*" writeTo="blackHole" final="true" enabled="true" />
黑洞目标为
<targets>
<target name="blackHole" xsi:type="Null" />
您可以像这样分配
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