Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NLog:Dev vs Prod连接字符串_C#_.net_Logging_Nlog - Fatal编程技术网

C# NLog:Dev vs Prod连接字符串

C# NLog:Dev vs Prod连接字符串,c#,.net,logging,nlog,C#,.net,Logging,Nlog,NLog是否提供了一种基于当前环境设置连接字符串的方法 在Dev中,我想去我的本地数据库 在Prod中,我想去我的生产数据库 我不想在推送更新之前手动更改配置文件。每次我更新。。。我不希望维护多个配置文件,因为每次更改都需要更新这些文件 理想情况下,我可以调用一个实用程序方法,该方法已经控制了应用程序其余部分访问的数据库。您可以在启动时将连接字符串放入全局变量中: 然后可以使用ConnectionString属性从数据库目标引用此全局变量 <target name="database"

NLog是否提供了一种基于当前环境设置连接字符串的方法

在Dev中,我想去我的本地数据库

在Prod中,我想去我的生产数据库

我不想在推送更新之前手动更改配置文件。每次我更新。。。我不希望维护多个配置文件,因为每次更改都需要更新这些文件


理想情况下,我可以调用一个实用程序方法,该方法已经控制了应用程序其余部分访问的数据库。

您可以在启动时将连接字符串放入全局变量中:

然后可以使用ConnectionString属性从数据库目标引用此全局变量

<target name="database" xsi:type="Database" connectionString="${gdc:item=MyCustomProperty}">
   <parameter name="@message" layout="${message}" />
</target>

签出,我们将其用于所有配置文件(App.config.Web.config、NLog.config等)


它可以转换配置XML的行或部分内容,具体取决于编译构建配置、调试/暂存/发布。

您可能应该研究发布、发布管理和配置转换。如果范围太广,那么只需发布和配置转换。如果您未使用ASP.Net,则可能需要查看SlowCheetah。您是否使用.Net core?未使用.Net core。我目前正在通过Azure SDK发布。它有自己的xxx.Cloud.cscfg和xxx.Prod.cscfg。这仍然需要我维护多个配置文件,我不希望这样做。这实际上与NLog本身没有多大关系。正如@YuriyFaktorovich所建议的,您应该研究发布管理。在某种程度上,您是要发布还是转换是一个优先选择的问题,但我要说的是,您必须“总体上”解决这个问题,而不仅仅是关于日志记录。这将不仅仅适用于布局属性?如果是这样,那听起来正是我想要的。将让它试一试。它只能用于布局属性
Database.ConnectionString
是一个布局属性。我的理解是,该部分是数据库信息需要的地方,该部分用于格式化。您是否有包含数据库信息的部分的示例?布局是一种数据类型(如字符串)。一些非直瞄目标有一个称为Layout类型Layout的属性。但是数据库目标没有。数据库目标主要使用其参数(每个参数都有各自的布局)。我猜您已经运行了一个示例,并且知道如何编写xml属性。现在,我们添加了一些示例xml。