为什么没有为我的 NLog 设置 LogLevel 规则?
Why the LogLevel rule is not set for my NLog?
我想以编程方式设置日志级别。
但是当我查看我的日志时,所有日志都被写入(从 Trace 到 Error)。
我像 Whosebug.
上的示例一样对其进行编码
foreach (var rule in NLog.LogManager.Configuration.LoggingRules)
{
//rule.EnableLoggingForLevel(nlogLevel);
rule.EnableLoggingForLevels(NLog.LogLevel.Warn, NLog.LogLevel.Fatal);
}
NLog.LogManager.ReconfigExistingLoggers();
Logger.LogTrace("LogLevel Trace");
Logger.LogDebug("LogLevel Debug");
Logger.LogInformation("LogLevel Info");
Logger.LogWarning("LogLevel Warn");
Logger.LogError("LogLevel Error");
我试过了
rule.EnableLoggingForLevel(nlogLevel);
和
rule.EnableLoggingForLevels(NLog.LogLevel.Warn, NLog.LogLevel.Fatal);
日志的屏幕截图:
为什么我不能更改日志级别?
这是正确的,启用一个日志级别并不意味着禁用另一个。
否则这将是一个问题:
rule.EnableLoggingForLevel(LogLevel.Warn);
rule.EnableLoggingForLevel(LogLevel.Error); // luckily this won't disable Warn
你可以做什么:
首先禁用所有日志级别,然后启用您需要的那些
rule.DisableLoggingForLevels(LogLevel.Trace, LogLevel.Fatal); // disable all
rule.EnableLoggingForLevels(NLog.LogLevel.Warn, NLog.LogLevel.Fatal); // enable needed
对于这种情况 - 所有规则的最低要求 - 还有一种更简单的方法:
LogManager.GlobalThreshold = LogLevel.Info; // For all rules, minimum is Info
请注意,您的代码中默认启用所有级别的原因尚不清楚。这是在 nlog.config 或代码中配置的,因为这不是 NLog 的默认值。
这也发生在我身上,我在更改日志级别后 运行 LogManager.ReconfigExistingLoggers();
解决了它。
这适用于您的情况:
rule.SetLoggingLevels(NLog.LogLevel.Warn, NLog.LogLevel.Fatal);
来自文档:
Enables logging the levels between (included) minLevel and maxLevel. All the other levels will be disabled.
我想以编程方式设置日志级别。 但是当我查看我的日志时,所有日志都被写入(从 Trace 到 Error)。 我像 Whosebug.
上的示例一样对其进行编码foreach (var rule in NLog.LogManager.Configuration.LoggingRules)
{
//rule.EnableLoggingForLevel(nlogLevel);
rule.EnableLoggingForLevels(NLog.LogLevel.Warn, NLog.LogLevel.Fatal);
}
NLog.LogManager.ReconfigExistingLoggers();
Logger.LogTrace("LogLevel Trace");
Logger.LogDebug("LogLevel Debug");
Logger.LogInformation("LogLevel Info");
Logger.LogWarning("LogLevel Warn");
Logger.LogError("LogLevel Error");
我试过了
rule.EnableLoggingForLevel(nlogLevel);
和
rule.EnableLoggingForLevels(NLog.LogLevel.Warn, NLog.LogLevel.Fatal);
日志的屏幕截图:
为什么我不能更改日志级别?
这是正确的,启用一个日志级别并不意味着禁用另一个。
否则这将是一个问题:
rule.EnableLoggingForLevel(LogLevel.Warn);
rule.EnableLoggingForLevel(LogLevel.Error); // luckily this won't disable Warn
你可以做什么:
首先禁用所有日志级别,然后启用您需要的那些
rule.DisableLoggingForLevels(LogLevel.Trace, LogLevel.Fatal); // disable all
rule.EnableLoggingForLevels(NLog.LogLevel.Warn, NLog.LogLevel.Fatal); // enable needed
对于这种情况 - 所有规则的最低要求 - 还有一种更简单的方法:
LogManager.GlobalThreshold = LogLevel.Info; // For all rules, minimum is Info
请注意,您的代码中默认启用所有级别的原因尚不清楚。这是在 nlog.config 或代码中配置的,因为这不是 NLog 的默认值。
这也发生在我身上,我在更改日志级别后 运行 LogManager.ReconfigExistingLoggers();
解决了它。
这适用于您的情况:
rule.SetLoggingLevels(NLog.LogLevel.Warn, NLog.LogLevel.Fatal);
来自文档:
Enables logging the levels between (included) minLevel and maxLevel. All the other levels will be disabled.