У вас включена автоматическая перезагрузка (<nlog autoReload="true”
), поэтому, если потребуется перезагрузка (после сна или изменения в конфигурации), вы потеряете изменения, внесенные в код.
Решение - отключить автоматическую перезагрузку. или установите изменение после перезагрузки еще раз. См. Пример кода:
static void Main(string[] args)
{
UpdateNLogConfig();
LogManager.ConfigurationReloaded += LogManager_ConfigurationReloaded;
log.Info("Entering Application.");
Console.WriteLine("Press any key to exit ...");
Console.Read();
}
private static void LogManager_ConfigurationReloaded(object sender, LoggingConfigurationReloadedEventArgs e)
{
UpdateNLogConfig();
}
private static void UpdateNLogConfig()
{
//note: don't set LogManager.Configuration because that will overwrite the nlog.config settings
var target = (FileTarget)LogManager.Configuration.FindTargetByName<AsyncTargetWrapper>("logfile").WrappedTarget;
target.FileName = $@"..\..\..\..\logs\Foobar.log";
LogManager.ReconfigExistingLoggers();
}
См. Также Объединение конфигурации XML с C # config · NLog / NLog Wiki