Добавить, включить и отключить программные журналы NLog
Как я могу добавлять, редактировать, удалять, включать и отключать регистраторы из кода для NLog?
Ответы
Ответ 1
Чтобы добавить:
var logTarget = new ...
logTarget.Layout = "Your layout format here";
// e.g. "${logger}: ${message} ${exception:format=tostring}";
// specify what gets logged to the above target
var loggingRule = new LoggingRule("*", LogLevel.Debug, logTarget);
// add target and rule to configuration
LogManager.Configuration.AddTarget("targetName", logTarget);
LogManager.Configuration.LoggingRules.Add(loggingRule);
LogManager.Configuration.Reload();
Удаление выполняется с помощью
LogManager.Configuration.LoggingRules.Remove(loggingRule);
LogManager.Configuration.Reload();
Ответ 2
Я знаю, что это старый ответ, но я хотел дать отзыв для тех, кто хочет внести изменения в свои цели и правила протоколирования программно, что 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 во время выполнения