Как сделать переменную постоянной (не изменять ее значение) в файле NLog.config при изменении какой-либо другой целевой переменной - PullRequest
0 голосов
/ 27 мая 2019

Создан файл NLog.config, в котором определены некоторые переменные и некоторые целевые параметры. Когда я делаю некоторые изменения в целевой переменной, файл перечитывается, и значение переменной также сбрасывается до исходного значения в файле, даже если если я изменил это через код. Я не хочу, чтобы переменная сбрасывала свое значение, если оно изменяется из кода или если изменяется любое другое значение переменной.

1 Ответ

0 голосов
/ 20 июня 2019

Может быть, вы можете сделать это:

<variable name="defaultLogDir" value="c:/defaultdir/"/>
<targets>
   <target name="logfile" type="file" fileName="${gdc:overrideDir:whenEmpty=${defaultLogDir}}/hello.txt" />
</targets>
<rules>
   <logger name="*" writeTo="logfile" />
</rules>

Затем просто сконфигурируйте overrideDir, используя GDC в коде:

NLog.GlobalDiagnosticsContext.Set("overrideDir","c:/mydir/");

GDC имеет ограничение, что вы не можете включать средства визуализации макета, такие как ${shortdate}.

Но да, было бы неплохо, если бы keepVariablesOnReload=true был немного умнее, поэтому он применялся только к переменным, которые были изменены после загрузки конфигурации (сейчас нужно перезапустить, чтобы изменить nlog-переменныев конфигурационном файле).Вы можете создать запрос .

...