Я хочу добавить трассировку к своим задачам запуска. Я пытался включить 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 запускается только при запуске роли. Что делать, если задача запуска завершается сбоем и роль никогда не запускается — журналы не сохраняются.
Пожалуйста, дайте мне знать, если я иду неправильным путем, чтобы решить эту проблему. Спасибо.