我是Azure开发的新手,我一直在努力寻找工作(到Azure存储)。
我终于设法让它工作但第一个跟踪消息似乎没有转移到WADLogsTable。
作为一个workaroud,我暂时修复了它,在启动DiagnosticMonitor后添加了10秒的睡眠。
我开始在WorkerRole的OnStart方法中使用它:
var config = DiagnosticMonitor.GetDefaultInitialConfiguration();
config.Logs.ScheduledTransferPeriod = TimeSpan.FromMinutes(1);
config.Logs.ScheduledTransferLogLevelFilter = LogLevel.Verbose;
DiagnosticMonitor.Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", config);
现在我按照建议更改了它:
string wadConnectionString = "Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString";
CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue(wadConnectionString));
RoleInstanceDiagnosticManager roleInstanceDiagnosticManager = cloudStorageAccount
.CreateRoleInstanceDiagnosticManager(RoleEnvironment.DeploymentId,
RoleEnvironment.CurrentRoleInstance.Role.Name,
RoleEnvironment.CurrentRoleInstance.Id);
DiagnosticMonitorConfiguration diagnosticMonitorConfiguration = DiagnosticMonitor.GetDefaultInitialConfiguration();
diagnosticMonitorConfiguration.Logs.ScheduledTransferPeriod = TimeSpan.FromMinutes(1);
roleInstanceDiagnosticManager.SetCurrentConfiguration(diagnosticMonitorConfiguration);
但是我仍然得到相同的行为(现在睡眠不足10次了,我不得不把它改成20s)。
有没有人遇到同样的问题? 有没有人有更好的解决方法? 我做错了吗?
答案 0 :(得分:0)
这可能与在本地开发结构模拟器中运行有关。您应该尝试在实际的Windows Azure Compute实例中运行它,以查看问题是否消失。
答案 1 :(得分:0)
您使用的是什么SDK? 1.3 SDK及更高版本的诊断监视器作为后台任务运行,已经在您的角色之外,因此您不应该在其上调用Start。相反,您应该配置.wadcfg文件或以编程方式配置:
请注意,博客作者会讨论1.3中的错误,但这已在1.4中修复。