2012-03-20 3 views
4

Windows Azure에서 진단을 구성하는 다양한 방법을 이해하려고합니다. 지금까지 wad-control-container의 Diagnostics에 저장된 xml blob에서 해당 내용을 검색 할 때 Azure에서 적절히 사용하는 diagnostics.wadcfg를 설정했습니다 (테이블은 정확한 새로 고침 빈도로 업데이트됩니다).Azure 진단 - 런타임 def 대 wadcfg

이제 모든 인스턴스에 대한 로그 전송 기간을 늘리기 위해 cscfg의 일부 필드를 덮어 쓰고 싶습니다 (예 : 각 wad-control-container 파일을 업데이트 할 필요없이 인스턴스 재활용 btw). 그래서 내 WebRole.Run()에서 RoleEnvironment.GetConfigurationSettingValue()에서 매개 변수를 가져 와서 현재 구성에 적용하려고합니다. 하지만 내 문제는 DiagnosticMonitor.GetDefaultInitialConfiguration()에서 읽은 값이 내 diagnostics.wadcfg의 내용과 일치하지 않으며 새 값을 설정해도 아무런 효과가없는 것입니다.

누구나 diagnostics.wadcfg에서 가져온 내용과 런타임에 설정할 수있는 값 사이의 관계를 설명 할 수 있습니까?

감사

답변

3

GetDefaultInitialConfiguration()의 이름이이 기본 구성을 취 상태로 변경할 수 없기, 당신에게 당신의 현재 설정을 반환하지 않습니다. 제자리에있는 구성을 사용해야하는 경우 GetCurrentConfiguration 방법을 사용해야합니다.

그러나 전송을 강화해야하는 경우 예를 들어 Cerebrata's Azure Diagnostics Manager을 사용하여 주문형 전송을 신속하게 시작할 수 있습니다.

또한 PowerShell에 Windows Azure 진단 관리 cmdlet을 사용할 수도 있습니다. this article을 확인하십시오.

희망이 도움이됩니다. wadcfg 파일의 값을 이용하기 위해

+0

사실! – ThomasWeiss

2

다음 코드 코드가 현재 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); 
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) 
관련 문제