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