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()メソッドだと思います。