【问题标题】:NLog use diferrent config file according to Solution ConfigurationsNLog 根据解决方案配置使用不同的配置文件
【发布时间】: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 文件夹,具体取决于构建目标。
  • 请注意,我不会将其写成答案,因为这正是我们的需求和工作方式。可能还有更好的解决方案来做到这一点。

标签: c# logging nlog


【解决方案1】:

您的问题基本上是关于配置文件的。看看SlowCheetah。这将有助于根据 VS 配置将任何配置文件转换为不同的布局。

我们目前在 Visual Studio 中有 3 种不同的配置:Debug、Staging 和 Release。根据我们编译的配置,SlowCheetah 将通过转换行或整个部分将 Web.Config 和 NLog.config 文件转换为该配置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-03
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    相关资源
    最近更新 更多