2013-02-13 115 views
1

Azure正在開始做我的工作,我試圖讓診斷跟蹤工作並遵循各種指南(幾乎都說同樣的事情)。我現在無法在本地進行調試(出現錯誤),並且RDP似乎不想連接。我已經在web配置如下:Azure DiagnosticsMonitorTraceListener不能正常工作

<system.diagnostics> 
<trace> 
    <listeners> 
    <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics"> 
     <filter type="" /> 
    </add> 
    </listeners> 
</trace> 

然後這在webrole.cs:

public override bool OnStart() 
    { 
     var diagnostics = DiagnosticMonitor.GetDefaultInitialConfiguration(); 

     diagnostics.Logs.ScheduledTransferLogLevelFilter = LogLevel.Undefined; 
     diagnostics.Logs.ScheduledTransferPeriod = TimeSpan.FromMinutes(1); 
     diagnostics.Logs.BufferQuotaInMB = 10; 

     CloudStorageAccount account = CloudStorageAccount.Parse(
      RoleEnvironment.GetConfigurationSettingValue("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString")); 

     DiagnosticMonitor.Start(account, diagnostics); 

     return base.OnStart(); 
    } 

這在服務定義文件:

<Imports> 
    <Import moduleName="Diagnostics" /> 
    <Import moduleName="RemoteAccess" /> 
</Imports> 

而這在服務配置文件中:

<ConfigurationSettings> 
    <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="DefaultEndpointsProtocol=https;AccountName=<snip>;AccountKey=<snip>" /> 

當網站部署時我沒有收到任何錯誤,我嘗試了一個本地文本偵聽器,它工作正常,但我在Azure上的表存儲中沒有任何提示。這已經工作過,但我已經將部署移到另一個訂閱和存儲帳戶。由於我的RDP問題,我甚至無法看到各種文件是否在本地創建,並且我不知道要檢查哪些文件!

請幫忙!

回答

3

我終於設法得到它的工作按照本指南操作:Here

基本上唯一的區別是在我的Web角色的OnStart方法而非上述這是發現,幾乎所有的在線的例子代碼,我不得不使用以下內容,也許是因爲我使用了多個實例?

public override bool 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(); 

     config.Logs.ScheduledTransferPeriod = TimeSpan.FromMinutes(1D); 
     config.Logs.ScheduledTransferLogLevelFilter = LogLevel.Undefined; 

     roleInstanceDiagnosticManager.SetCurrentConfiguration(config); 
     return base.OnStart(); 
    } 

謝謝elastacloud!

+0

謝謝。我瘋了。你應該將自己的答案標記爲正確答案,你真的幫助我。 – 2013-02-26 17:45:41

+0

對於此答案的後續訪問者,請注意'OnStart'不再是必需的。日誌根據您的Windows Azure配置文件設置自動初始化。我認爲這是SDK 2.2的最新版本。 – 2013-12-11 12:12:07