0

1つの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ファイルはAzureBLOBストレージに保存されます。

編集:

また、log4net.Config.XmlConfigurator.Configure()は、App.configまたはWeb.configに基づいて正しいlog4netblobを読み取ります。具体的には、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 に答える