我正在编写Windows服务,并认为最好在Logger
的每个调用中创建一个新的OnStart
,而不是在服务构造函数中。这样,我希望配置文件的更改将在重新启动服务时生效,而不必以某种方式重新启动进程以及所有麻烦。
然后我发现NLog可能只读取文件一次,当它初始化LogManager
或其他东西时,我的预防措施是徒劳的。
答案 0 :(得分:1)
如果使用配置文件(nlog.config),则可以启用autoReload。
<nlog autoReload="true">
...
</nlog>
如果启用并且nlog.config中发生更改,则配置将自动重新加载而不重新启动服务。请参阅Automatic reconfiguration。
如果您有问题配置NLog(因此没有nlog.config),则需要在配置更改后调用LogManager.ReconfigExistingLoggers
。
并认为最好在OnStart的每次调用中创建一个新的Logger,而不是在服务ctor中。
对于这两种情况,创建新Logger
时无关紧要。