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