【发布时间】:2017-12-29 13:32:48
【问题描述】:
.Net 应用程序的设置使得同一程序的多个实例将(重新)使用相同的应用程序配置(.exe.config - app.config 在 Visual Studio 中)。
在我们的场景中,我们需要使用自己的.exe.config 运行每个实例。这不是 .Net 要做的“开箱即用”的事情。然而,这个漂亮的小包装器为我们解决了问题:https://stackoverflow.com/a/6151688/95008
这对我们来说很好,直到我们意识到 NLog 似乎不尊重 app-config 更改。我们在.exe.config 中为 NLog 添加了一个配置部分,这应该使每个实例都可以使用不同的规则和目标记录到不同的位置。
但是,NLog 似乎不尊重 app-config 更改。我的猜测是,它在内部不是通过 AppSettings API 询问其配置部分,而是可能使用代码手动查找 .exe.config 和其中的配置部分。
所以,似乎有三种选择:
- 查看 NLog 在未来版本中更改此代码(鉴于这确实是问题)。我将发布该项目的问题以进行更新:链接到NLog issue。
- 从 .exe.config 部分或从特定的 nlog.config 文件(可能通过 .exe.config 中的设置给出)手动加载配置。但是,我们如何有效地做到这一点,以便创建的任何记录器都基于手动加载的配置?
- 也许还有其他解决方案?
【问题讨论】:
-
谢谢。可能是。我自己只是在看,但我希望有一个更简单的解决方案。
-
@rene 实际上,那里的答案似乎并不完全是我们正在寻找的,因为只是重新加载仍然会尝试相同的 .exe.config。但是,其中一个 cmets 看起来很有希望:
NLog.LogManager.Configuration = new NLog.Config.XmlLoggingConfiguration(NLogConfigFile_Dst, true); NLog.LogManager.ReconfigExistingLoggers();
标签: c# .net app-config nlog