スタートアップタスクにトレースを追加したい。実際の起動タスクの前に実行されるPowerShellスクリプトでDiagnosticsMonitorTraceListenerを有効にしようとしていました。コード:起動タスクを実行する前にDiagnosticsMonitorTraceListnenerを有効にする
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 Diagnostic Infrastructureを使って起動タスクによって生成されたログをコピーする方法があることを知っていますが、わかっている限り、DiagnosticMonitorはロールが開始されたときにのみ起動します。起動タスクが失敗し、ロールが実行されない場合、ログは永続化されません。
これを解決する方法が間違っている場合は教えてください。ありがとう。
スタートアップタスクは、例えば、本番サーバー、私がアクセスを持っていない可能性がためにどのリモートマシン上で実行します。私がイベントログに書き込むことに決めた場合、起動タスクの1つが失敗した場合(DiagnosticMonitorは決して起動されません)、Azureストレージにイベントログを保存するカスタムロジックを書き込む必要があります。 – Janusz