Azureの無料アカウント(90日間の試用版)を持っていますが、ワーカーの役割がエラーになっていることがわかりました。お金がかかると思うので、監視機能を有効にしていません。
アカウントを有料アカウントにアップグレードしなくても、エラーをログに記録して取得できる場所に保存する方法はありますか?
Azureの無料アカウント(90日間の試用版)を持っていますが、ワーカーの役割がエラーになっていることがわかりました。お金がかかると思うので、監視機能を有効にしていません。
アカウントを有料アカウントにアップグレードしなくても、エラーをログに記録して取得できる場所に保存する方法はありますか?
ワーカーロールのOnStart()メソッドで、未処理の例外のイベントをアタッチできます。
public override bool OnStart()
{
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
bool result = base.OnStart();
Trace.TraceInformation("ReceiverRole has been started");
return result;
}
private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Trace.TraceError("Unhandled exception in worker role: {0}", e.ExceptionObject);
}
ワーカーロールの診断データ(トレースログ、イベントログ、パフォーマンスカウンターなど)を収集できる(Windows Azure Diagnostics )を確認します。構成によっては、この診断データをWindowsAzureテーブルストレージに永続化できます。任意のストレージエクスプローラーを使用して診断データを表示できます。
Azure Diagnosticsの実装にはかなりの時間がかかり、これまでのところ最善の方法は、自分のマシンでAzure Emulatorを起動して、どのようなエラーが表示されるかを確認することでした。
何をするかというと、Azureプロジェクトをスタートアップとしてセットアップして実行するだけです。または、Azureプロジェクトを右クリックして、[デバッグ]->[新しいインスタンスの開始]を選択します。
非常に安価な方法は、例外の内容をスタックとともにStorageAccountテーブルに送信するロールエラーハンドラーに追加することです。クラウドストレージブラウザを使用してテーブルの内容を表示し、例外の詳細を確認できます。これは、テーブルの内容をSSにダウンロードし、エラーを参照できるスマートクライアントを作成する、優れた「社内」アプリを作成するために、時間の経過とともに成熟する可能性があります。
このシステムは、UTCを介して冗長性を設定し、タイムスタンプに対応できるように実装されています。ロギングは別のワーカーロールで実行されるため、「本番」ロールはキューにポストされます。キューは、失敗したロールが処理するのに非常に高速です。