2012-03-20 11 views
4

Windows Azureで診断を設定するさまざまな方法を理解しようとしています。 これまで、私は、wad-control-container内のDiagnosticsによって保存されたxmlブロブ内のコンテンツを取得するときにAzureによって正しく使用されるdiagnostics.wadcfgを設定しました(テーブルは正しいリフレッシュレートで更新されます)。Azure Diagnostics - ランタイムデフオルトvs. wadcfg

ここでは、すべてのインスタンスのログ転送期間を短縮するために、cscfgのいくつかのフィールドをオーバーライドしたいとします(各wad-control-containerファイルを更新する必要はなく、インスタンスリサイクルbtw)。 私のWebRole.Run()では、RoleEnvironment.GetConfigurationSettingValue()からパラメータを取得し、それを現在の設定に適用しようとします。しかし私の問題は、私がDiagnosticMonitor.GetDefaultInitialConfiguration()から読んだ値が私のdiagnostics.wadcfgの内容に対応しておらず、そこに新しい値を設定しても効果がないようです。

誰でもdiagnostics.wadcfgから取得したものと実行時に設定できる値との関係を説明できますか?

おかげ

答えて

3

GetDefaultInitialConfiguration()その名は、それがデフォルトの構成をとると述べてbecasue、あなたの現在の設定を返しません。使用中の構成を使用する必要がある場合は、GetCurrentConfigurationメソッドを使用する必要があります。

ただし、転送を強化する必要がある場合は、たとえばCerebrata's Azure Diagnostics Managerを使用して、オンデマンドで役割を転送することができます。

また、Windows Azure診断管理コマンドレットをpowershellに使用することもできます。チェックアウト:this article

希望すると便利です。

+0

真! – ThomasWeiss

2

次のコードのコードは、現在DiagnosticsMonitorConfigurationにアクセスするために使用することができるwadcfgファイル内の値を利用するために:

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); 
0

ボリスLipshitzによってコードは(Breaking Changes in Windows Azure Diagnostics (SDK 2.0))が動作しない:「DeploymentDiagnosticManagerコンストラクタを今CloudStorageAccountオブジェクトの代わりにストレージアカウントへの接続文字列を受け入れます "。 2.0+ SDK用

更新コード:メソッドの名前は...迅速かつ徹底的な返事をありがとうベルを鳴動している必要があることを

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) 
関連する問題