DiagnosticMonitorを使用するためにログを構成しようとしているAzureWebRoleがあります。
windowsazure.comのドキュメントによると、ログはOnStartに実装する必要があります。
Note: The code in the following steps is typically added to the OnStart method of the role.
https://www.windowsazure.com/en-us/develop/net/common-tasks/diagnostics/
OnStartメソッドにアクセスするには、RoleEntryPointを定義する必要があります。しかし、一度定義すると、WebアプリケーションApplication_StartのRoleEnvironmentにアクセスできなくなります。
DiagnosticMonitorを使用しながら、RoleEnvironmentをアプリケーションで使用できるようにするにはどうすればよいですか?
アプリケーションの接続文字列をサービス構成に保存します。
public class WebRole : RoleEntryPoint
{
public override bool OnStart()
{
// config
var config = DiagnosticMonitor.GetDefaultInitialConfiguration();
LocalResource localResource = RoleEnvironment.GetLocalResource("MyCustomLogs");
DirectoryConfiguration dirConfig = new DirectoryConfiguration();
dirConfig.Container = "wad-mycustomlogs-container";
dirConfig.DirectoryQuotaInMB = localResource.MaximumSizeInMegabytes;
dirConfig.Path = localResource.RootPath;
DiagnosticMonitorConfiguration diagMonitorConfig = DiagnosticMonitor.GetDefaultInitialConfiguration();
diagMonitorConfig.Directories.ScheduledTransferPeriod = TimeSpan.FromMinutes(1.0);
diagMonitorConfig.Directories.DataSources.Add(dirConfig);
DiagnosticMonitor.Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", config);
return base.OnStart();
}