0

我正在使用 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 云上。当我在模拟器上运行云应用程序并将诊断连接字符串指向实时云存储时,即使这样我也能够获得诊断。有人可以让我知道发生了什么吗?

卡皮尔

4

1 回答 1

0

这听起来有点奇怪。我想指出查看模拟器控制台(devFabric)中的日志和将日志存储在存储帐户中的区别。如果您在将服务指向云存储帐户但在本地模拟器中本地运行服务时能够看到存储在存储帐户中的日志,那么我猜您在发布服务后等待的时间不够长. 将日志从角色实例推送到存储帐户的过程有时会比预期花费更多的时间,我建议在查询表存储之前等待更长时间

于 2011-11-08T04:50:50.067 回答