#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 выполняются вызовы. Если это не решает проблему, я обычно использую три подхода для устранения этой проблемы:
- Это проблема с вашим кодом, пишущим инструкции трассировки? RDP для виртуальной машины Azure и настройте простой TextWriterTraceListener для записи в файл — http://msdn.microsoft.com/en-us/library/sk36c28t (v = против 110).aspx.
- Проблема в том, что трассировки не обнаруживаются агентом диагностики 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.
- Проблема в том, что трассировки собираются, но не загружаются в хранилище? Используйте тот же инструмент 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>
Это исправило это для нас