【发布时间】:2020-02-28 02:28:33
【问题描述】:
我从配置中初始化 NLog,然后通过代码添加额外的目标和规则。目标和规则应该始终是配置文件可能会或可能不会更改的配置的一部分。我需要配置重新加载才能调用我的方法,该方法添加了我的额外目标和规则,但是我无法验证事件是否被触发。
我已尝试将我的事件处理程序添加到 LogManager 和 LogManager.LogFactory,已连接 Reloaded 和 Changed(尽管我只需要 Reloaded)。调用 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();
}
预期结果将是我的输出窗口中的 2 条消息,其中一条表示配置已重新加载。实际结果是 1 条消息,表示它正在加载配置。
【问题讨论】:
标签: c# configuration reload nlog