【发布时间】:2017-08-22 07:47:42
【问题描述】:
我正在开发一个 ASP.Net Web API 2 项目,并已将 nlog 配置为将应用程序日志写入数据库。
由于我们有 4 个环境(本地、测试、暂存、生产),我需要将日志写入不同的数据库。
所以,在我的 web.config 中我有:
<configSections>
<section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
</configSections>
另外, 我有一个 Nlog.config 文件:
<?xml version="1.0" encoding="utf-8"?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="ExceptionLog" type="Database">
<connectionString>
// DbConnectionString
</connectionString>
<commandText>
// INSERT COMMAND
</commandText>
// Parameters
</target>
我需要的是每个环境的不同连接字符串。或者可能是一堆文件,如 NLog.Staging.config、NLog.Testing.config 等。
请指教。
【问题讨论】:
-
为什么你有一个配置部分和一个单独的文件?我们这里有 2 个配置文件:NLog.Release.config 和 NLog.Debug.config 并相应地重命名它们取决于构建目标。这足以满足我们的要求。我想还有更复杂的方法。
-
@Fildor 你的意思是简单地为解决方案配置(Nlog.Staging.config 和 NLog.Release.config)创建一个文件,它会工作吗??
-
假设您将 NLog 配置为使用 NLog.config 作为配置源。然后您可以提供 NLog.Staging.config、NLog.Release.config 等根据您的部署目标,您必须将相应的文件重命名为 NLog.config,这可以通过一些脚本轻松完成。取决于您的部署工具链。在我的解决方案中,我只是使用构建后语句将适当的配置复制并重命名到 bin 文件夹,具体取决于构建目标。
-
请注意,我不会将其写成答案,因为这正是我们的需求和工作方式。可能还有更好的解决方案来做到这一点。