Как заставить перезагрузить файл конфигурации NLog?

Я использую NLog с файлами конфигурации. Чтобы не записывать слишком много информации для длительных процедур, я делаю такие вещи:

 foreach (LoggingRule rule in LogManager.Configuration.LoggingRules) 
 {
      rule.DisableLoggingForLevel(LogLevel.Trace);   
      rule.DisableLoggingForLevel(LogLevel.Debug);   
 }
 LogManager.ReconfigExistingLoggers();

Это позволяет мне временно снизить уровень детализации журналов. Вышеуказанные строки являются лишь примером для иллюстрации. Кажется, это работает отлично.

После этого я хотел бы восстановить свою «обычную» конфигурацию регистрации, простоперезагрузка моего файла NLog.Config который уже был автоматически загружен при запуске программы. Я пробовал :

LogManager.Configuration.Reload();
LogManager.ReconfigExistingLoggers();

Я думал, что это будет легко, но конфигурация. Перезагрузка не делает то, что я ожидал, и я не нашел другого подходящего метода. После звонка мой регистратор по-прежнему не сохраняет следы и события отладки, пока они находились при запуске программы.

Итак, мой вопрос: как программно форсировать перезагрузку NLog.config во время выполнения и восстановить мои «стандартные» настройки логгеров?

Спасибо

Обновление вопроса с более подробной информацией:

Я использую VS2013, .Net 4 projet с NLog 4.4.0-beta11 (бета-версия, но последняя на nuget), простая цель «Файл», определенная в файле конфигурации с minLevel = Trace и autoReload = True

Создание журнала на уровне класса: частное статическое чтение только для Logger Logger = LogManager.GetCurrentClassLogger ();

Вот мое тестовое свидетельство:

    Assert.True(Logger.IsTraceEnabled);
    Assert.True(Logger.IsDebugEnabled);

    Logger.Trace("1 - This should appear in log");
    Logger.Debug("2 - This should appear in log");

    foreach (LoggingRule rule in LogManager.Configuration.LoggingRules)
    {
        rule.DisableLoggingForLevel(LogLevel.Trace);
        rule.DisableLoggingForLevel(LogLevel.Debug);
    }
    LogManager.ReconfigExistingLoggers();

    Logger.Trace("3 - This should NOT appear in log");
    Logger.Debug("4 - This should NOT appear in log");
    Logger.Info("5 - This should appear in log");

    Assert.False(Logger.IsDebugEnabled);
    Assert.False(Logger.IsTraceEnabled);

    LogManager.Configuration.Reload();
    LogManager.ReconfigExistingLoggers();

    // This is were something goes wrong

    Logger.Trace("6 - This should appear in log"); // DOES NOTHING
    Logger.Debug("7 - This should appear in log"); // DOES NOTHING
    Logger.Info("8 - This should appear in log");

    Assert.True(Logger.IsDebugEnabled); // FAILS
    Assert.True(Logger.IsTraceEnabled); // FAILS

Сгенерированный журнал:

    TRACE 1 - This should appear in log         
    DEBUG 2 - This should appear in log
    INFO 5 - This should appear in log
    INFO 8 - This should appear in log

Во внутреннем журнале nlog я вижу, что конфигурация, кажется, была перезагружена без проблем (очень длинный файл, поэтому я не размещаю его здесь, если кто-то не спрашивает), но, возможно, существующие регистраторы не обновляются?

С кодом выше это должно быть легко попробовать на вашей стороне. Пожалуйста, дайте мне знать, если я что-то не так делаю или это ошибка в управлении конфигурацией NLog.

Ответы на вопрос(1)

Ваш ответ на вопрос