Включение DiagnosticsMonitorTraceListnener перед запуском задач запуска

Я хочу добавить трассировку к своим задачам запуска. Я пытался включить DiagnosticsMonitorTraceListener в сценарии powershell, который запускается перед всеми фактическими задачами запуска. Код:

Add-Type -Path ./Microsoft.WindowsAzure.Diagnostics.dll
$listener = new-object -type Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener 

[System.Diagnostics.Trace]::Listeners.Add($listener)

$credentials = new-object -type Microsoft.WindowsAzure.StorageCredentialsAccountAndKey -argumentlist "ACCOUNT_NAME", "ACCOUNT_KEY"
$dmConfig = Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitor]::GetDefaultInitialConfiguration();
$dmConfig.Logs.ScheduledTransferPeriod = [System.TimeSpan]::FromMinutes(1)
[Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitor]::Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", $dmConfig)

Мои следы почему-то такие:

[System.Diagnostics.Trace]::TraceInformation("Starting startup tasks")

никогда не будут переданы в хранилище Azure. Скрипт работает без проблем. Я знаю, что есть способ заставить инфраструктуру диагностики Azure копировать журналы, созданные задачами запуска, но, насколько я понимаю, DiagnosticMonitor запускается только при запуске роли. Что делать, если задача запуска завершается сбоем и роль никогда не запускается — журналы не сохраняются.

Пожалуйста, дайте мне знать, если я иду неправильным путем, чтобы решить эту проблему. Спасибо.


person Janusz    schedule 19.01.2012    source источник


Ответы (1)


Одним из вариантов, если вы используете Visual Studio Ultimate, является использование IntelliTrace. Это может смотреть на многое во время запуска. Для внешних задач и тому подобного проверьте:

http://blog.smarx.com/posts/windows-azure-startup-tasks-tips-tricks-and-gotchas

А также

http://leastprivacy.com/2011/03/04/logging-output-of-azure-startup-tasks-to-the-event-log/

person Tom    schedule 20.01.2012
comment
Задачи запуска выполняются на удаленной машине, к которой у меня может не быть доступа, например, на производственном сервере. Если я решу записать в журнал событий, мне все равно придется написать пользовательскую логику, которая будет сохранять журналы событий в хранилище Azure при сбое одной из задач запуска (DiagnosticMonitor никогда не будет запущен). - person Janusz; 21.01.2012