Роль Azure (службы WCF) не регистрирует информацию трассировки

#azure #azure-web-roles #azure-diagnostics

#azure #azure-web-роли #azure-диагностика

Вопрос:

Я размещаю кучу служб WCF в рабочей роли, которую я развертываю в Azure. Проблема в том, что стандартное ведение журнала трассировки не отображается в таблицах хранилища Azure.

В коде — я использую

 Trace.TraceInformation("Something")
 

В .csdef у меня есть значение по умолчанию

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

В .csfg у меня есть

    <ConfigurationSettings>
      <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="CONNECTION_STRING_THAT_WORKS_FOR_OTHER_ROLE" />
  </ConfigurationSettings>
 

И в wadcfg у меня есть

   <Logs bufferQuotaInMB="1024" scheduledTransferPeriod="PT1M" scheduledTransferLogLevelFilter="Verbose" />
 

Эта настройка отлично работает для рабочей роли, которую я тоже развертываю, которая хорошо регистрируется в WADLogsTable. Но это не так. Какие-либо указатели?

Ответ №1:

Как вы настраиваете DiagnosticMonitorTraceListener и в каком процессе вы выполняете трассировку.Вызовы TraceInformation? Обычно я вижу это в DiagnosticMonitorTraceListener в app.config, но трассировка.Вызовы TraceInformation выполняются в каком-то другом процессе. Вы должны настроить DiagnosticMonitorTraceListener в файле .config (или в коде через TraceListeners .Добавить) для процесса, в котором выполняется ваша трассировка.Из TraceInformation выполняются вызовы. Если это не решает проблему, я обычно использую три подхода для устранения этой проблемы:

  1. Это проблема с вашим кодом, пишущим инструкции трассировки? RDP для виртуальной машины Azure и настройте простой TextWriterTraceListener для записи в файл — http://msdn.microsoft.com/en-us/library/sk36c28t (v = против 110).aspx.
  2. Проблема в том, что трассировки не обнаруживаются агентом диагностики Windows Azure (т. Е.. проблема, которую я описал выше, связана с тем, что DiagnosticMonitorTraceListener не зарегистрирован)? Используйте инструмент table2csv в AzureTools по адресу http://blogs.msdn.com/b/kwill/archive/2013/08/26/azuretools-the-diagnostic-utility-used-by-the-windows-azure-developer-support-team.aspx чтобы просмотреть файлы Wadlog TSF.
  3. Проблема в том, что трассировки собираются, но не загружаются в хранилище? Используйте тот же инструмент table2csv, но посмотрите на таблицы MAEvent. В этих таблицах регистрируется передача диагностических данных в хранилище.

Ответ №2:

Мы решили эту проблему позже, изменив не проект Azure, а базовую веб-роль:

1. Добавьте файл webrole.cs в проект, содержащий это внутри:

 public class WebRole : RoleEntryPoint
{
    public override bool OnStart()
    {    
        return base.OnStart();
    }
}
 

2 — И это app.config того же проекта:

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

Это исправило это для нас