NLog 是否缓存来自 NLog.config 的数据?

Does NLog cache the data from NLog.config?

我正在编写一个 Windows 服务,我认为最好在每次调用 OnStart 时创建一个新的 Logger,而不是在服务构造函数中创建。这样,我希望对配置文件的更改在服务重新启动时生效,而不必以某种方式重新启动该过程以及所有麻烦。

然后我想到 NLog 可能只读取文件一次,当它初始化 LogManager 或其他东西时,我的预防措施是徒劳的。

如果您使用配置文件(nlog.config),您可以启用autoReload。

<nlog autoReload="true">
   ...
</nlog>

如果启用并且 nlog.config 中有更改,将自动重新加载配置 而无需 重新启动服务。参见 Automatic reconfiguration

如果你配置 NLog 有问题(所以没有 nlog.config),那么你需要在配置更改后调用 LogManager.ReconfigExistingLoggers

and thought it better to create a new Logger in each call of OnStart, vs. in the service ctor.

对于这两种情况,何时创建新 Logger 并不重要。