实际上,您的代码中出现错误:LogManager.Configuration.Reload()不会更改logger的配置,但会从NLog.config文件加载配置,对其进行反序列化并返回LoggingConfiguration。
要恢复配置,您需要执行以下操作:
LogManager.Configuration = LogManager.Configuration.Reload(); LogManager.ReconfigExistingLoggers();
这是一个测试示例(示例config =“DEBUG”中的minLevel):
[TestMethod] public void Test() { Logger.Trace("TRACE 1"); Logger.Debug("DEBUG 1"); Logger.Warn("WARN 1"); foreach (LoggingRule rule in LogManager.Configuration.LoggingRules) { rule.DisableLoggingForLevel(LogLevel.Trace); rule.DisableLoggingForLevel(LogLevel.Debug); } LogManager.ReconfigExistingLoggers(); Logger.Trace("TRACE 2"); Logger.Debug("DEBUG 2"); Logger.Warn("WARN 2"); // Reconfigure(); LogManager.Configuration = LogManager.Configuration.Reload(); LogManager.ReconfigExistingLoggers(); Logger.Trace("TRACE 3"); Logger.Debug("DEBUG 3"); Logger.Warn("WARN 3"); }
输出:
(DEBUG): DEBUG 1 (WARN): WARN 1 // here settings changed (WARN): WARN 2 //here settings reloaded (DEBUG): DEBUG 3 (WARN): WARN 3