C# NLog配置重新加载事件未触发

C# NLog配置重新加载事件未触发,c#,configuration,reload,nlog,C#,Configuration,Reload,Nlog,我从配置中初始化NLog,然后通过代码添加额外的目标和规则。目标和规则应该始终是配置的一部分,配置文件可能会更改,也可能不会更改。我需要在配置重新加载时调用添加额外目标和规则的方法,但是我无法验证是否触发了事件 我已经尝试将我的事件处理程序添加到LogManager和LogManager.LogFactory中,并重新加载和更改了它们(尽管我只需要重新加载)。调用LogManager.Configurtion=LogManager.Configuration.Reload(),重新配置现有记录器

我从配置中初始化NLog,然后通过代码添加额外的目标和规则。目标和规则应该始终是配置的一部分,配置文件可能会更改,也可能不会更改。我需要在配置重新加载时调用添加额外目标和规则的方法,但是我无法验证是否触发了事件

我已经尝试将我的事件处理程序添加到LogManager和LogManager.LogFactory中,并重新加载和更改了它们(尽管我只需要重新加载)。调用LogManager.Configurtion=LogManager.Configuration.Reload(),重新配置现有记录器,但我的事件方法仍然未调用

private static void ConfigurationReloadedHandler(object sender, LoggingConfigurationReloadedEventArgs args) { 
 System.Diagnostics.Trace.WriteLine("Configuration was reloaded");
}

[Test]
public void WillCallReloadHandler() {
   System.Diagnostics.Trace.WriteLine("Loading Config");
   LogManager.LoadConfiguration("nlog.config");
   LogManager.LogFactory.ConfigurationReloaded += ConfigurationReloadedHandler;
   LogManager.Configuration = LogManager.Configuration.Reload();
   LogManager.ReconfigExistingLoggers();
}

预期的结果是在我的输出窗口中出现两条消息,其中一条表示配置已重新加载。实际结果是1条消息,表明它正在加载配置。

configurationreloated
仅在检测到基础
NLog.config
已修改时由NLog调用

相反,您可以这样做:

LogManager.ConfigurationChanged += LogManager_ConfigurationChanged;

private static void LogManager_ConfigurationChanged(object sender, LoggingConfigurationChangedEventArgs e)
{
    System.Diagnostics.Trace.WriteLine("Configuration was changed");
}