最近ローカルマシンで開発したワーカーロールクラウドサービスがあります。このサービスは、ファイルをバイト配列として受信し、ファイルを再コンパイルして適切な形式に変換し、AzureStorageに保存するWCFインターフェイスを公開します。自分のマシンでAzureComputeEmulatorを使用してすべてを機能させることができ、サービスをAzureに公開しましたが...何もありませんでした。もう一度私のマシンで実行すると、期待どおりに動作します。コンピューターで作業していたとき、アプリケーションを実行するには、AzureComputeEmulatorのコンソール出力が不可欠でした。
RDPを介してクラウドサービスで利用できる同様の機能はありますか?コマンドプロンプトまたはPowerShellでの役割の開始/再開など?そうでない場合、(Intellitraceを使用せずに)ワーカーロールが実行していることをデバッグ/ログに記録するための最良の方法は何ですか?プロジェクトで診断を有効にしていますが、コンピューターエミュレーターコンソールと同じレベルの詳細が得られていないようです。localhostでロールと対応する.NETアプリケーションを再実行しましたが、コンソールで発生する可能性のあるエラーを見つけることができませんでした。
編集:次善の策
手動ロギングにフォールバックして、テキストファイルをAzureStorageアカウントにフィードするクラスを実装しました。コードは次のとおりです。
public class EventLogger
{
public static void Log(string message)
{
CloudBlobContainer cbc;
cbc = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("StorageClientAccount"))
.CreateCloudBlobClient()
.GetContainerReference("errors");
cbc.CreateIfNotExist();
cbc.GetBlobReference(string.Format("event-{0}-{1}.txt", RoleEnvironment.CurrentRoleInstance.Id, DateTime.UtcNow.Ticks)).UploadText(message);
}
}
ErrorLogger.Log()を呼び出すと、新しいテキストファイルが作成され、そこに入力したメッセージがすべて記録されます。以下の答えに例があります。