【问题标题】:Edit Log4Net properties in Web.Config file using powershell使用 powershell 在 Web.Config 文件中编辑 Log4Net 属性
【发布时间】:2017-04-27 12:33:23
【问题描述】:

在我的 CI 构建期间,我使用 PowerShell 编辑 Web.Config 文件中的一些值。

我已经使用以下代码来实现这一点;

#Open web.config
$xml = [xml](get-content($ConfigurationFile))
$conf = $xml.configuration  
$conf.appSettings.add | foreach { if ($_.key -eq "ApplicationRootUri") { $_.value = $ApplicationSettingValue } }  
$conf.appSettings.add | foreach { if ($_.key -eq "connectionString") { $_.value = $MainConnectionStringValue } }
#Save Config
$xml.Save($ConfigurationFile)

但是,我需要更改的下一个属性不在配置文件的 AppSettings 部分。它在 Log4App 中;

<log4net>
  <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
  <bufferSize value="1" />
  <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  <connectionString value="VALUE_I_WANT_TO_CHANGE" />
</log4net>

到目前为止,我已经尝试了各种更改此值的方法,但都没有成功。

我在上面的代码中停滞不前;

$confLog = $conf.log4net.appender
$$confLog.add | foreach { if ($_.name -eq "AdoNetAppender") { $_.connectionString.value = $MainConnectionStringValue } }

我收到的错误消息通常是“属性 |'connectionString|”在此对象上找不到。验证该属性是否存在并且可以设置'

有人知道如何正确编辑 connectionString 属性吗?

【问题讨论】:

  • 不是答案,但您可以在 log4net 配置中设置 connectionStringName ,它将从 web.config 中检索值 - 因为您似乎正在使用 @987654324 @ 两者都用?
  • 嗨@stuartd,我该怎么做呢?是 MainConnectionStringValue 应该用于两个连接字符串。
  • 我没有注意到您在应用程序设置部分中有您的连接字符串,这只有在您将它放在&lt;connectionStrings&gt; 部分中时才有效。对此感到抱歉。

标签: xml powershell web-config log4net web.config-transform


【解决方案1】:

对于有兴趣的人来说,我是那么近又那么远

这是我整理的最终对我有用的东西

$confLog = $conf.log4net.appender
$confLog | foreach { if ($_.name -eq "AdoNetAppender") { $_.connectionString.Value = $MainConnectionStringValue } }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-12
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    相关资源
    最近更新 更多