Azure DiagnosticsMonitorTraceListener не работает

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>

And then this in the 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 я даже не вижу, создаются ли локально различные файлы на экземпляре, и я все равно не знаю, какие файлы проверять!

Пожалуйста помоги!


person Lukos    schedule 13.02.2013    source источник


Ответы (1)


Наконец-то мне удалось заставить его работать, следуя этому руководству: Здесь

По сути, единственная разница заключалась в методе 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!

person Lukos    schedule 13.02.2013
comment
Спасибо. Я сходил с ума. Вы должны пометить свой ответ как правильный, вы мне очень помогли. - person Skill M2; 26.02.2013
comment
Для последующих посетителей этого ответа обратите внимание, что OnStart больше не нужен. Ведение журнала инициализируется автоматически на основе настроек вашего профиля Windows Azure. Думаю, это касается SDK 2.2. - person Edward Brey; 11.12.2013