Я инициализирую NLog из конфигурации, а затем добавляю дополнительную цель и правило с помощью кода. Цель и правило всегда должны быть частью конфигурации, где файл конфигурации может изменяться или не изменяться. Мне нужно в Configuration Reload для вызова моего метода, который добавляет мою дополнительную цель и правило, однако я не могу убедиться, что событие запускается.
Я попытался добавить свои обработчики событий как в 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 сообщение о загрузке конфигурации.