.NET应用程序已设置,以便使用同一程序的多个实例使用相同的应用程序配置(Visual Studio中的.exe.config
-app.config
)。
在我们的情况下,我们需要使用自己的.exe.config
运行每个实例。这不是让.NET做"开箱即用"的事情。但是,这个漂亮的小包装器为我们提供了问题:https://stackoverflow.com/a/6151688/95008
这对我们有效,直到我们意识到NLOG似乎并不尊重应用程序更改。我们在.exe.config
中为NLOG添加了配置部分,这应该使每个实例都可以使用不同的规则和目标对不同位置进行登录。
但是,似乎NLOG并不尊重App-Config的变化。我的猜测是,它在内部是不是通过AppSettings API询问其配置截面,而是使用代码手动查找.exe.config
及其中的配置段。
所以,似乎有三个替代方案:
- 查看NLOG在将来的版本中更改代码(鉴于这确实是问题)。我将发布该项目的问题以进行更新:链接到NLOG问题。
- 手动从.exe.config的部分或特定的nlog.config文件手动加载配置(也许是通过.exe.config中的设置给出的)。但是,我们如何有效地执行此操作,以便创建的任何登录器都是基于手动加载的配置?
- 也许还有另一个解决方案?
我的猜测是,它在内部没有通过AppSettings API询问其配置部分,而是使用代码手动查找.exe.config和其中的配置段。
是正确的,因为NLOG正在为NLOG的配置使用相同的代码,无论是在web.config还是nlog.config
中重新加载配置在代码中很容易,只需:
NLog.LogManager.Configuration = NLog.LogManager.Configuration.Reload();
,如果在重新加载配置之前制作了登录器,
NLog.LogManager.ReconfigExistingLoggers()