Log4Net web.config 转换不起作用
Log4Net web.config transform wont work
当我发布到我的 Azure 应用程序时,我试图让 web.config 转换为 Log4Net 工作,但它永远不会改变。我在转换中还有其他几个项目,它们工作得很好。这是我的
<log4net>
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender" xdt:Locator="Match(name)">
<connectionString value="Server=production server connection details here" xdt:Transform="Replace"/>
</appender>
</log4net>
谁能告诉我哪里出错了?
这是我的配置转换文件(删除了实时细节)
<?xml version="1.0" encoding="utf-8"?>
<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<log4net>
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender" xdt:Locator="Match(name)">
<connectionString value="Server=server details here" xdt:Transform="SetAttributes"/>
</appender>
</log4net>
<connectionStrings>
<add name="AzureWebJobsDashboard" connectionString="DefaultEndpointsProtocol=https;AccountName=liveversionhere;AccountKey=liveversionhere;EndpointSuffix=core.windows.net" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
<add name="AzureWebJobsStorage" connectionString="DefaultEndpointsProtocol=https;AccountName=liveversionhere;AccountKey=liveversionhere;EndpointSuffix=core.windows.net" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
<add name="DefaultConnection" connectionString="Data Source=liveversionhere" providerName="System.Data.SqlClient" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
<add name="CHPDataContext" connectionString="Data Source=liveversionhere" providerName="System.Data.SqlClient" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
<add name="elmah" connectionString="Data Source=liveversionhere" providerName="System.Data.SqlClient" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
<appSettings>
<add key="ida:redirectUri" value="liveversionhere" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
<add key="ida:ClientId" value=liveversionhere xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
<add key="ida:ClientSecret" value=liveversionhere" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
<add key="ida:TenantId" value=liveversionhere xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
</appSettings>
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
</system.web>
</configuration>
**更新
我已经更改了转换(见下文),但它仍然不起作用。有人知道这里发生了什么吗?这应该是非常简单的,但我发现自己浪费了数小时的时间只是为了让这个基本的东西真正起作用
<log4net>
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender" xdt:Locator="Match(name)">
<connectionString name="Log4NetConn" value="Server=productionsdetailshere" xdt:Locator="Match(name)" xdt:Transform="Replace"/>
</appender>
</log4net>
根据你的描述,我这边做了一些测试。假设您通过 VS 部署 Web 应用程序,我通过 "Build > Configuration Manager" 创建一个名为 Release.Azure
的新配置,如下所示:
然后我添加了一个名为Web.Release.Azure.config
的web配置文件,配置内容如下:
<log4net>
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender" xdt:Locator="Match(name)">
<connectionString value="Server=azure production server connection details here" xdt:Transform="SetAttributes"/>
</appender>
</log4net>
注:Replace
和SetAttributes
都为connectionString
下的属性xdt:Transform
部分可以按预期工作。
使用 VS 的发布向导,在“设置”下选择我的 azure 配置,并将其部署到 azure web 应用程序。
此外,我还尝试通过 Kudu Console, restart my azure website, then I found the transform could work. You could refer to here 在我的网络应用程序的 d:\home\site
下创建一个 applicationHost.xdt
文件以获取更多详细信息。
更新:
applicationhost.xdt
如下所示:
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<location path="%XDT_SITENAME%" xdt:Transform="InsertIfMissing" xdt:Locator="Match(path)">
<log4net>
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender" xdt:Locator="Match(name)">
<connectionString value="Server=production server connection details here" xdt:Transform="SetAttributes"/>
</appender>
</log4net>
</location>
</configuration>
不得不替换整个 log4net 部分
连接字符串根本不起作用
当我发布到我的 Azure 应用程序时,我试图让 web.config 转换为 Log4Net 工作,但它永远不会改变。我在转换中还有其他几个项目,它们工作得很好。这是我的
<log4net>
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender" xdt:Locator="Match(name)">
<connectionString value="Server=production server connection details here" xdt:Transform="Replace"/>
</appender>
</log4net>
谁能告诉我哪里出错了?
这是我的配置转换文件(删除了实时细节)
<?xml version="1.0" encoding="utf-8"?>
<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<log4net>
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender" xdt:Locator="Match(name)">
<connectionString value="Server=server details here" xdt:Transform="SetAttributes"/>
</appender>
</log4net>
<connectionStrings>
<add name="AzureWebJobsDashboard" connectionString="DefaultEndpointsProtocol=https;AccountName=liveversionhere;AccountKey=liveversionhere;EndpointSuffix=core.windows.net" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
<add name="AzureWebJobsStorage" connectionString="DefaultEndpointsProtocol=https;AccountName=liveversionhere;AccountKey=liveversionhere;EndpointSuffix=core.windows.net" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
<add name="DefaultConnection" connectionString="Data Source=liveversionhere" providerName="System.Data.SqlClient" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
<add name="CHPDataContext" connectionString="Data Source=liveversionhere" providerName="System.Data.SqlClient" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
<add name="elmah" connectionString="Data Source=liveversionhere" providerName="System.Data.SqlClient" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
<appSettings>
<add key="ida:redirectUri" value="liveversionhere" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
<add key="ida:ClientId" value=liveversionhere xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
<add key="ida:ClientSecret" value=liveversionhere" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
<add key="ida:TenantId" value=liveversionhere xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
</appSettings>
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
</system.web>
</configuration>
**更新
我已经更改了转换(见下文),但它仍然不起作用。有人知道这里发生了什么吗?这应该是非常简单的,但我发现自己浪费了数小时的时间只是为了让这个基本的东西真正起作用
<log4net>
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender" xdt:Locator="Match(name)">
<connectionString name="Log4NetConn" value="Server=productionsdetailshere" xdt:Locator="Match(name)" xdt:Transform="Replace"/>
</appender>
</log4net>
根据你的描述,我这边做了一些测试。假设您通过 VS 部署 Web 应用程序,我通过 "Build > Configuration Manager" 创建一个名为 Release.Azure
的新配置,如下所示:
然后我添加了一个名为Web.Release.Azure.config
的web配置文件,配置内容如下:
<log4net>
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender" xdt:Locator="Match(name)">
<connectionString value="Server=azure production server connection details here" xdt:Transform="SetAttributes"/>
</appender>
</log4net>
注:Replace
和SetAttributes
都为connectionString
下的属性xdt:Transform
部分可以按预期工作。
使用 VS 的发布向导,在“设置”下选择我的 azure 配置,并将其部署到 azure web 应用程序。
此外,我还尝试通过 Kudu Console, restart my azure website, then I found the transform could work. You could refer to here 在我的网络应用程序的 d:\home\site
下创建一个 applicationHost.xdt
文件以获取更多详细信息。
更新:
applicationhost.xdt
如下所示:
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<location path="%XDT_SITENAME%" xdt:Transform="InsertIfMissing" xdt:Locator="Match(path)">
<log4net>
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender" xdt:Locator="Match(name)">
<connectionString value="Server=production server connection details here" xdt:Transform="SetAttributes"/>
</appender>
</log4net>
</location>
</configuration>
不得不替换整个 log4net 部分
连接字符串根本不起作用