【问题标题】:Azure DiagnosticsMonitorTraceListener not workingAzure DiagnosticsMonitorTraceListener 不工作
【发布时间】:2013-01-28 21:16:12
【问题描述】:

Azure 开始疯狂了,我正在尝试使诊断跟踪工作并遵循各种指南(几乎都说同样的话)。我现在无法在本地调试(我收到错误)并且 RDP 似乎不想连接。我在网络配置中有以下内容:

 <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 问题,我什至看不到是否在实例上本地创建了各种文件,而且我也不知道要检查哪些文件!

请帮忙!

【问题讨论】:

    标签: azure azure-storage azure-table-storage azure-diagnostics


    【解决方案1】:

    我终于按照本指南设法让它工作了:Here

    基本上唯一的区别在于我的网络角色的 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!

    【讨论】:

    • 谢谢。我快疯了。您应该将自己的答案标记为正确的答案,您真的帮了我大忙。
    • 对于此答案的后续访问者,请注意 OnStart 不再需要。日志记录会根据您的 Windows Azure 配置文件设置自动初始化。我认为这是从 SDK 2.2 开始的。
    猜你喜欢
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多