我使用的是Azure sdk 1.4,我正在尝试在我的网络角色上设置诊断程序。这是我在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云时,我将此配置值设置为正确指向正确的存储帐户:
< Setting name =“Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString”value =“DefaultEndpointsProtocol = https; AccountName = acctname; AccountKey = acctKey”/>
但是,我的webrole日志从未出现在azure云上。当我在模拟器上运行云应用程序并将诊断连接字符串指向实时云存储时,即使这样我也能够获得诊断信息。有人能告诉我发生什么事吗?
卡皮尔西
答案 0 :(得分:0)
这听起来有点奇怪。我想区分在模拟器控制台(devFabric)中查看日志和将日志存储在存储帐户中。 如果您在将服务指向云存储帐户但在本地模拟器中本地运行服务时能够看到存储在存储帐户中的日志,那么我猜您在发布服务后就不会等待。将日志从您的角色实例推送到您的存储帐户的过程有时需要比预期更长的时间,我建议您在查询表存储之前再等一会儿