【发布时间】:2019-05-27 11:01:50
【问题描述】:
已经创建了一个 NLog.config 文件,其中定义了一些变量和一些目标参数,当我对目标变量进行一些更改时,文件被重新读取并且变量值也被重置为文件中的初始值如果我通过代码更改了它。 如果变量从代码更改或任何其他变量值发生更改,我不希望变量重置其值。
【问题讨论】:
已经创建了一个 NLog.config 文件,其中定义了一些变量和一些目标参数,当我对目标变量进行一些更改时,文件被重新读取并且变量值也被重置为文件中的初始值如果我通过代码更改了它。 如果变量从代码更改或任何其他变量值发生更改,我不希望变量重置其值。
【问题讨论】:
也许你可以这样做:
<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>
然后只需在代码中使用 GDC 配置 overrideDir:
NLog.GlobalDiagnosticsContext.Set("overrideDir","c:/mydir/");
GDC 的限制是你不能包含像 ${shortdate} 这样的布局渲染器。
但是是的,如果keepVariablesOnReload=true 更聪明一点就更好了,所以它只适用于在加载配置后修改的变量(现在必须重新启动才能修改配置文件中的 nlog-variables)。欢迎您创建feature request。
【讨论】: