NLog:如果 LoggingConfiguration.AddRule() 添加时没有名称,则按名称删除日志记录规则?
NLog: Remove logging rule by name if it was added without name by LoggingConfiguration.AddRule()?
我是 NLog 的新手,但我想在过去的几个小时里我已经很好地理解了它是如何工作的。
深入研究 NLog API 后,出现了几个有关日志记录规则的问题。其中之一是:
如何按名称(使用 LoggingConfiguration.RemoveRuleByName()
)删除之前由 LoggingConfiguration.AddRule()
以编程方式添加的规则?
LoggingConfiguration.AddRule()
不提供设置 LoggingRule.RuleName
的参数。
LoggingConfiguration.AddRule()
不接受 LoggingRule
对象。
- 我不想检查
LoggingConfiguration.LoggingRules
集合中的每条规则,因为这意味着按内容检查它们,因为我无法设置名称。
在写题的过程中,我找到了解决方法,在此分享。
LoggingConfiguration.LoggingRules
集合是一个 IList<LoggingRule>
,因此支持 Add()
、Clear()
等
因此可以将 LoggingRule
个对象直接添加到此列表中。 LoggingRule
对象可以通过 IList<>.Remove()
再次删除,如果它有名称,则通过 LoggingConfiguration.Remove()
.
添加命名规则的示例:
var loggingRule1 = new NLog.Config.LoggingRule ();
loggingRule1.RuleName = nameof (loggingRule1); // RuleName can also be set in constructor.
loggingRule1.LoggerNamePattern = "*";
loggingRule1.SetLoggingLevels (NLog.LogLevel.Info, NLog.LogLevel.Error);
loggingRule1.Targets.Add (consoleTarget);
loggingConfiguration.LoggingRules.Add (loggingRule1);
var loggingRule2 = new NLog.Config.LoggingRule ("*", NLog.LogLevel.Trace, NLog.LogLevel.Trace, consoleTarget) { RuleName = "loggingRule2" };
loggingConfiguration.LoggingRules.Add (loggingRule2);
logFactory.ReconfigExistingLoggers ();
// or, if config was not yet set to logFactory: logFactory.Configuration = loggingConfiguration;
删除命名规则的示例:
loggingConfiguration.RemoveRuleByName (nameof (loggingRule1));
logFactory.ReconfigExistingLoggers ();
恕我直言,API 的文档很少。我会建议一些更全面的描述。
我是 NLog 的新手,但我想在过去的几个小时里我已经很好地理解了它是如何工作的。
深入研究 NLog API 后,出现了几个有关日志记录规则的问题。其中之一是:
如何按名称(使用 LoggingConfiguration.RemoveRuleByName()
)删除之前由 LoggingConfiguration.AddRule()
以编程方式添加的规则?
LoggingConfiguration.AddRule()
不提供设置LoggingRule.RuleName
的参数。LoggingConfiguration.AddRule()
不接受LoggingRule
对象。- 我不想检查
LoggingConfiguration.LoggingRules
集合中的每条规则,因为这意味着按内容检查它们,因为我无法设置名称。
在写题的过程中,我找到了解决方法,在此分享。
LoggingConfiguration.LoggingRules
集合是一个 IList<LoggingRule>
,因此支持 Add()
、Clear()
等
因此可以将 LoggingRule
个对象直接添加到此列表中。 LoggingRule
对象可以通过 IList<>.Remove()
再次删除,如果它有名称,则通过 LoggingConfiguration.Remove()
.
添加命名规则的示例:
var loggingRule1 = new NLog.Config.LoggingRule ();
loggingRule1.RuleName = nameof (loggingRule1); // RuleName can also be set in constructor.
loggingRule1.LoggerNamePattern = "*";
loggingRule1.SetLoggingLevels (NLog.LogLevel.Info, NLog.LogLevel.Error);
loggingRule1.Targets.Add (consoleTarget);
loggingConfiguration.LoggingRules.Add (loggingRule1);
var loggingRule2 = new NLog.Config.LoggingRule ("*", NLog.LogLevel.Trace, NLog.LogLevel.Trace, consoleTarget) { RuleName = "loggingRule2" };
loggingConfiguration.LoggingRules.Add (loggingRule2);
logFactory.ReconfigExistingLoggers ();
// or, if config was not yet set to logFactory: logFactory.Configuration = loggingConfiguration;
删除命名规则的示例:
loggingConfiguration.RemoveRuleByName (nameof (loggingRule1));
logFactory.ReconfigExistingLoggers ();
恕我直言,API 的文档很少。我会建议一些更全面的描述。