我正在使用 Azure sdk 1.4 并尝试在我的 Web 角色上设置诊断。这是我在 webrole 的 onstart 方法中所做的:
string wadConnectionString = "Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString";
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue(wadConnectionString));
RoleInstanceDiagnosticManager roleInstanceDiagnosticManager = storageAccount.CreateRoleInstanceDiagnosticManager(RoleEnvironment.DeploymentId,
RoleEnvironment.CurrentRoleInstance.Role.Name, RoleEnvironment.CurrentRoleInstance.Id);
DiagnosticMonitorConfiguration config = DiagnosticMonitor.GetDefaultInitialConfiguration();
int loggingInterval = Int32.Parse(RoleEnvironment.GetConfigurationSettingValue("loggingInterval"));
config.Logs.ScheduledTransferPeriod = System.TimeSpan.FromMinutes(loggingInterval);
config.Logs.ScheduledTransferLogLevelFilter = LogLevel.Undefined;
roleInstanceDiagnosticManager.SetCurrentConfiguration(config);
// For information on handling configuration changes
// see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.
RoleEnvironment.Changing += RoleEnvironmentChanging;
现在,当我在我的开发机器上的云模拟器上运行它时 - 它工作正常,我可以看到 WADLogs 表中的日志。我已将我的 cscfg 文件中的“Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString”值设置为“UseDevelopmentStorage=true”。当我将我的 webrole 发布到 azure 云时,我将此配置值设置为正确指向正确的存储帐户:
<设置名称="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="DefaultEndpointsProtocol=https;AccountName=acctname;AccountKey=acctKey" />
但是,我的 webrole 日志从未出现在 azure 云上。当我在模拟器上运行云应用程序并将诊断连接字符串指向实时云存储时,即使这样我也能够获得诊断。有人可以让我知道发生了什么吗?
卡皮尔