Я знаю, что это старый ответ, но я хотел бы дать отзыв всем, кто хочет вносить изменения в свои цели и регистрировать правила программно, что Configuration.Reload () не работает.
Обновлять существующие цели программновам нужно использовать метод ReconfigExistingLoggers:
var target = (FileTarget)LogManager.Configuration.FindTargetByName("logfile");
target.FileName = "${logDirectory}/file2.txt";
LogManager.ReconfigExistingLoggers();
Пример, который добавляет и удаляет правила ведения журнала на лету:
if (VerboseLogging && !LogManager.Configuration.LoggingRules.Contains(VerboseLoggingRule))
{
LogManager.Configuration.LoggingRules.Add(VerboseLoggingRule);
LogManager.ReconfigExistingLoggers();
}
else if (!VerboseLogging && LogManager.Configuration.LoggingRules.Contains(VerboseLoggingRule))
{
LogManager.Configuration.LoggingRules.Remove(VerboseLoggingRule);
LogManager.ReconfigExistingLoggers();
}
Как написано в документах:
Перебирает все регистраторы, ранее возвращенные GetLogger.и пересчитывает их цель и список фильтров.Полезно после программного изменения конфигурации, чтобы убедиться, что все регистраторы были правильно сконфигурированы.
Этот ответ и пример взят из ответа Тони в:
Обновление целевого имени файла NLog во время выполнения