我正在尝试了解在Windows Azure中配置诊断程序的各种方法。 到目前为止,我已经设置了Azure正确使用的diagnostics.wadcfg,因为我在wad-control-container中的Diagnostics存储的xml blob中检索其内容(并且表以正确的刷新率更新)。 p>
现在我想覆盖cscfg中的一些字段,以便例如增加所有实例的日志传输周期(无需更新每个wad-control-container文件,如果是实例,将会删除它们回收btw)。 所以在我的WebRole.Run()中,我从RoleEnvironment.GetConfigurationSettingValue()中获取一个参数,并尝试将其应用于当前配置;但我的问题是我从DiagnosticMonitor.GetDefaultInitialConfiguration()读取的值与我的diagnostics.wadcfg的内容不对应,并且在那里设置新值似乎没有任何影响。
有人能解释一下从diagnostics.wadcfg获取的内容与您在运行时可以设置的值之间的关系吗?
由于
答案 0 :(得分:3)
GetDefaultInitialConfiguration()不会返回您当前的设置,因为它的名称表明它需要默认配置。如果需要采用适当的配置,则必须使用GetCurrentConfiguration方法。
但是,如果您只需要加强转移,则可以使用Cerebrata's Azure Diagnostics Manager来快速启动角色的按需转移。
您还可以将Windows Azure诊断管理cmdlet用于powershell。查看this article。
希望这有帮助!
答案 1 :(得分:2)
为了利用wadcfg文件中的值,可以使用以下代码代码来访问当前的DiagnosticsMonitorConfiguration:
var cloudStorageAccount = CloudStorageAccount.Parse(
RoleEnvironment.GetConfigurationSettingValue(WADStorageConnectionString));
var roleInstanceDiagnosticManager = cloudStorageAccount.CreateRoleInstanceDiagnosticManager(
RoleEnvironment.DeploymentId,
RoleEnvironment.CurrentRoleInstance.Role.Name,
RoleEnvironment.CurrentRoleInstance.Id);
var dmc = roleInstanceDiagnosticManager.GetCurrentConfiguration();
// Set different logging settings
dmc.Logs....
dmc.PerformanceCounters....
// don't forget to update
roleInstanceDiagnosticManager.SetCurrentConfiguration(dmc);
答案 2 :(得分:0)
Boris Lipshitz的代码现在不起作用(Breaking Changes in Windows Azure Diagnostics (SDK 2.0)):“DeploymentDiagnosticManager构造函数现在接受存储帐户的连接字符串而不是CloudStorageAccount对象”。
更新了SDK 2.0 +的代码:
var roleInstanceDiagnosticManager = new RoleInstanceDiagnosticManager(
// Add StorageConnectionString to your role settings for this to work
CloudConfigurationManager.GetSetting("StorageConnectionString"),
RoleEnvironment.DeploymentId,
RoleEnvironment.CurrentRoleInstance.Role.Name,
RoleEnvironment.CurrentRoleInstance.Id);
var dmc = roleInstanceDiagnosticManager.GetCurrentConfiguration();
// Set different logging settings
dmc.Logs....
dmc.PerformanceCounters....
// don't forget to update
roleInstanceDiagnosticManager.SetCurrentConfiguration(dmc)