0

我们将多个站点部署到单个 WebRole。

<Sites>
  <Site name="Web">
    <Bindings>
      <Binding name="EndpointA" endpointName="Internal" />
    </Bindings>
  </Site>
  <Site name="Web2" physicalDirectory="Web2">
    <Bindings>
      <Binding name="EndpointB" endpointName="EndpointB" />
    </Bindings>
  </Site>
</Sites>

如果我理解正确,您可以访问主站点,例如:

public class WebRole : RoleEntryPoint 
{
    public override void Run()
    {
        while (true)
        {
            // Reconfigure log4net every 10 minutes
            log4net.Config.XmlConfigurator.Configure();
            Thread.Sleep(60000);
        }
    }
}

但是如何为在 WebRole 上运行的每个站点执行 log4net.Config.XmlConfigurator.Configure()?

顺便提一句

log4net.config 文件存储在 Azure Blob 存储中。

编辑:

log4net.Config.XmlConfigurator.Configure() 将根据 App.config 或 Web.config 读取正确的 log4net blob。具体来说:将 ConfigureFromBlob() 添加到 log4net 实现中。

如果应用程序安装在本地,ConfigureFromFile() 将自动监视 log4net.config 文件的更改并在需要时重新配置。ConfigureFromUri() 和 ConfigureFromBlob() 无法执行此操作,因此需要手动重新配置 log4net.config 更改。

对于 Windows Azure,我想最好的地方是 Run() 方法。

4

1 回答 1

0

由于您将站点配置为在不同的应用程序池中运行,因此您需要在单个应用程序的 global.asax.cs 文件中为每个应用程序检测 log4net 全局静态变量

于 2013-03-19T21:52:44.123 回答