У меня возникли трудности с получением журналов трассировки в Azure WorkerRole, написанных на локальном хранилище для разработки (конечная цель - хранилище Azure после развертывания). У меня есть поисковые запросы в течение нескольких дней и продолжайте искать множество примеров, подобных этому http://forums.asp.net/t/2041817.aspx?Azure+Getting+Trace+Data+to+Azure+Storage. К сожалению, несмотря на то, что эта дискуссия уже началась в марте 2015 года, она по-прежнему ссылается на решение, которое, по-видимому, не поддерживается. Кодная строкаСлед роли роли Azure в хранилище разработки
DiagnosticMonitorConfiguration diagnosticConfiguration = DiagnosticMonitor.GetDefaultInitialConfiguration();
использует класс DiagnosticMonitor, который, по-видимому, теперь устарел. Я либо не разбираюсь в правильных вещах, либо возникает поразительная нехватка информации о том, как настроить журналы трассировки в «новейшей» поддерживаемой форме. Я могу найти много информации о старом «устаревшем» способе.
Вот что у меня есть. App.config для моего работника роли имеет этот раздел определен:
<system.diagnostics>
<trace>
<listeners>
<add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics">
<filter type="" />
</add>
</listeners>
</trace>
</system.diagnostics>
В самом деле, что автоматически добавлен шаблон, который создал WorkerRole. Я ничего не делал вручную с этим разделом.
Раздел WorkerRole в ServiceConfiguration.csdef выглядит следующим образом:
<WorkerRole name="Processor" vmsize="Small">
<ConfigurationSettings>
<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" />
</ConfigurationSettings>
</WorkerRole>
И раздел родственной роли в ServiceConfiguration.Local.cscfg выглядит следующим образом:
<Role name="Processor">
<Instances count="1" />
<ConfigurationSettings>
<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" />
</ConfigurationSettings>
</Role>
Тогда у меня есть Трассировка заявление в одном из классов моего проекта WorkerRole, который выглядит следующим образом:
Trace.TraceInformation("Handling event");
diagnostics.wadcfgx, связанный с WorkerRole в проекте облака выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<DiagnosticsConfiguration xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
<PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
<WadCfg>
<DiagnosticMonitorConfiguration overallQuotaInMB="4096">
<DiagnosticInfrastructureLogs scheduledTransferLogLevelFilter="Verbose" />
<Directories scheduledTransferPeriod="PT1M">
<IISLogs containerName="wad-iis-logfiles" />
<FailedRequestLogs containerName="wad-failedrequestlogs" />
</Directories>
<PerformanceCounters scheduledTransferPeriod="PT1M">
<PerformanceCounterConfiguration counterSpecifier="\Memory\Available MBytes" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\Web Service(_Total)\ISAPI Extension Requests/sec" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\Web Service(_Total)\Bytes Total/Sec" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\ASP.NET Applications(__Total__)\Requests/Sec" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\ASP.NET Applications(__Total__)\Errors Total/Sec" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\ASP.NET\Requests Queued" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\ASP.NET\Requests Rejected" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\Processor(_Total)\% Processor Time" sampleRate="PT3M" />
</PerformanceCounters>
<WindowsEventLog scheduledTransferPeriod="PT1M">
<DataSource name="Application!*" />
</WindowsEventLog>
<CrashDumps dumpType="Full">
<CrashDumpConfiguration processName="WaAppAgent.exe" />
<CrashDumpConfiguration processName="WaIISHost.exe" />
<CrashDumpConfiguration processName="WindowsAzureGuestAgent.exe" />
<CrashDumpConfiguration processName="WaWorkerHost.exe" />
<CrashDumpConfiguration processName="DiagnosticsAgent.exe" />
<CrashDumpConfiguration processName="w3wp.exe" />
</CrashDumps>
<Logs scheduledTransferPeriod="PT1M" scheduledTransferLogLevelFilter="Verbose" />
</DiagnosticMonitorConfiguration>
</WadCfg>
<StorageAccount>teststorage</StorageAccount>
</PublicConfig>
<PrivateConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
<StorageAccount name="teststorage" endpoint="https://core.windows.net/" />
</PrivateConfig>
<IsEnabled>true</IsEnabled>
</DiagnosticsConfiguration>
Azure хранения и вычислений эмулятор успешно запускается, когда я запустить приложение в Visual Studio. Со всем этим я ожидал бы перейти в Server Explorer в Visual Studio, разверните узел Azure до Хранения. Перейдите на узел (Development) и увидите, что есть таблица под узлом Tables, содержащая мои журналы трассировки, но там ничего нет.
Очевидно, что я делаю что-то не так, и до сих пор найти документацию достаточно ясно, либо в блоге или Microsoft, которая объясняет, как получить эту работу. Поэтому здесь я спрашиваю, что будет казаться чем-то относительно простым.
Ну, это был очень быстрый, хотя и неудачный ответ. Спасибо за помощь. Я бы хотел проверить, что все настроено и настроено правильно локально, прежде чем публиковать на Azure. – meyousikmann
Я нахожусь в той же лодке, что и вы, и это отстой! Не имея возможности проверять локально, это похоже на стрельбу в темноте и надежду на ее работу. Пока что мы придерживаемся SDK 2.4. –