Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么未为我的NLog设置日志级别规则?_C#_.net Core_Command Line Interface_Nlog - Fatal编程技术网

C# 为什么未为我的NLog设置日志级别规则?

C# 为什么未为我的NLog设置日志级别规则?,c#,.net-core,command-line-interface,nlog,C#,.net Core,Command Line Interface,Nlog,我想以编程方式设置日志级别。 但当我查找日志时,所有日志都是从跟踪写入错误的。 我像上面的例子那样编写代码 我试过了 rule.EnableLoggingForLevel(nlogLevel); 及 日志的屏幕截图: 为什么我不能更改日志级别?这是正确的,启用一个日志级别并不意味着禁用另一个日志级别 否则,这将是一个问题: rule.EnableLoggingForLevel(LogLevel.Warn); rule.EnableLoggingForLevel(LogLevel.Error

我想以编程方式设置日志级别。 但当我查找日志时,所有日志都是从跟踪写入错误的。 我像上面的例子那样编写代码

我试过了

rule.EnableLoggingForLevel(nlogLevel); 

日志的屏幕截图:


为什么我不能更改日志级别?

这是正确的,启用一个日志级别并不意味着禁用另一个日志级别

否则,这将是一个问题:

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的默认值。

这是正确的,启用日志级别并不意味着禁用另一个日志级别

否则,这将是一个问题:

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.reconfigeExistingLoggers来解决它;更改日志级别后。

这也发生在我身上,我可以通过运行LogManager来解决它;更改日志级别后。

这将适用于您的情况:

rule.SetLoggingLevels(NLog.LogLevel.Warn, NLog.LogLevel.Fatal);
从文件:

允许记录包含的minLevel和maxLevel之间的级别。所有其他级别都将被禁用


这将适用于您的案例:

rule.SetLoggingLevels(NLog.LogLevel.Warn, NLog.LogLevel.Fatal);
从文件:

允许记录包含的minLevel和maxLevel之间的级别。所有其他级别都将被禁用


你试过禁用其他的吗?这很有趣,因为rule.DisableLoggingForLevelNLog.LogLevel.Trace;作品这不是我想要的方式,而是一个很好的解决方法。也许你有一个启用了所有级别的nlog.config?@LorenzoIsidori是的。但我认为无论我的nlog.config中写了什么,我都可以通过编程来设置它?!当然可以,但在开始时,NLog会从文件中加载他的配置。如果您的配置文件启用了所有级别,这将是您的默认设置…然后您可以覆盖级别。你能分享你的nlog.config吗?你试过禁用其他的吗?这很有趣,因为rule.DisableLoggingForLevelNLog.LogLevel.Trace;作品这不是我想要的方式,而是一个很好的解决方法。也许你有一个启用了所有级别的nlog.config?@LorenzoIsidori是的。但我认为无论我的nlog.config中写了什么,我都可以通过编程来设置它?!当然可以,但在开始时,NLog会从文件中加载他的配置。如果您的配置文件启用了所有级别,这将是您的默认设置…然后您可以覆盖级别。你能分享你的nlog.config吗?你可以只调用SetLoggingLevels,而不是调用DisableLoggingForLevels和EnableLoggingForLevels。你是对的。SetLoggingLevels已添加到NLog 4.5中,您可以只调用SetLoggingLevels,而不调用DisableLoggingForLevels和EnableLoggingForLevels。您是对的。NLog 4.5中增加了设置日志级别