Журнал отслеживания Windows Azure не работает
Я уверен, что пропустил что-то простое, но я не могу получить простой Trace.WriteLine для работы над Azure.
Шаги, которые я сделал:
Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString настроен на нашу учетную запись Azure
Диагностика модуля импорта в файл определения службы.
Web config
:
<system.diagnostics>
<switches>
<add name="logLevel" value="4" />
</switches>
<trace autoflush="false" indentsize="4">
<listeners>
<add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
name="AzureDiagnostics">
</add>
</listeners>
</trace>
</system.diagnostics>
WebRole.cs
public class WebRole : RoleEntryPoint
{
public override bool OnStart()
{
String wadConnectionString = "Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString";
CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue(wadConnectionString));
RoleInstanceDiagnosticManager roleInstanceDiagnosticManager =
cloudStorageAccount.CreateRoleInstanceDiagnosticManager(
RoleEnvironment.DeploymentId,
RoleEnvironment.CurrentRoleInstance.Role.Name,
RoleEnvironment.CurrentRoleInstance.Id);
DiagnosticMonitorConfiguration diagnosticMonitorConfiguration =
roleInstanceDiagnosticManager.GetCurrentConfiguration();
diagnosticMonitorConfiguration.Directories.ScheduledTransferPeriod =
TimeSpan.FromMinutes(5d);
diagnosticMonitorConfiguration.Logs.ScheduledTransferPeriod =
TimeSpan.FromMinutes(1d);
diagnosticMonitorConfiguration.Logs.ScheduledTransferLogLevelFilter = LogLevel.Verbose;
roleInstanceDiagnosticManager.SetCurrentConfiguration
(diagnosticMonitorConfiguration);
Trace.WriteLine("This is the message");
Debug.Write("This is the debug message");
System.Diagnostics.Trace.TraceError("message2");
System.Diagnostics.Trace.TraceWarning("message warning");
System.Diagnostics.Trace.TraceInformation("message warning");
Trace.Flush();
return base.OnStart();
}
}
Решение компилируется как выпуск.
Когда я просматриваю объекты в учетной записи хранилища, я вижу таблицу под названием WADDirectoriesTable и три создаваемые blobs, называемые vsdeploy, wad-control-container и was-iis-logfiles.
Ничего похожего на информацию о трассировке.
Большое спасибо
Ответы
Ответ 1
Правильно, отсортировано!
В этом сообщении объясняются все: http://social.msdn.microsoft.com/Forums/pl-PL/windowsazuredata/thread/d3f2f1d7-f11e-4840-80f7-f61dc11742fb
Это потому, что в Azure SDK 1.3 слушатели различаются в файле webrole.cs из остальной части веб-приложения из-за того, что он полностью работает в IIS. Если я добавлю элементы трассировки непосредственно в веб-приложение, появится таблица WADLogsTable с информацией о трассировке.
Ответ 2
У меня была такая же проблема. Я использовал решение здесь. Я считаю, что фрагмент, который вам не хватает, - это место, где журналы планируются к передаче (в этом случае, используя путь LocalResource):
public override bool OnStart()
{
Trace.WriteLine("Entering OnStart...");
var traceResource = RoleEnvironment.GetLocalResource("TraceFiles");
var config = DiagnosticMonitor.GetDefaultInitialConfiguration();
// *** this part specifies where transfers should be stored ***
config.Directories.DataSources.Add(
new DirectoryConfiguration
{
Path = traceResource.RootPath,
Container = "traces",
DirectoryQuotaInMB = 100
});
config.Directories.ScheduledTransferPeriod = TimeSpan.FromMinutes(10);
DiagnosticMonitor.Start("DiagnosticsConnectionString", config);
return base.OnStart();
}
Чтобы это сработало, вам нужно создать LocalStorage node для хранения этих файлов в ServiceDefinition.csdef
:
<LocalStorage name="TraceFiles" sizeInMB="100" cleanOnRoleRecycle="true" />
и вам нужно иметь способ передать эти файлы в какое-то место, где вы можете добраться до них, потому что они недоступны в учетной записи хранилища, а в локальной папке ресурсов на самой виртуальной машине. Я выполняю это с помощью веб-страницы, которая позволяет мне загружать файлы локальных ресурсов.
Ответ 3
У меня были схожие проблемы, и эти сообщения не отвечали за меня. Я собрал сообщение в блоге, в котором излагаются шаги, которые я предпринял для получения Диагностики, работающей с SDK 1.6.
Диагностика Windows Azure с SDK 1.6 для WebRoles