0

最近ローカルマシンで開発したワーカーロールクラウドサービスがあります。このサービスは、ファイルをバイト配列として受信し、ファイルを再コンパイルして適切な形式に変換し、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()を呼び出すと、新しいテキストファイルが作成され、そこに入力したメッセージがすべて記録されます。以下の答えに例があります。

4

1 に答える 1

2

私が知っているワーカーロール用のコンソールはありません。診断が役に立たない場合は、少しハッキーにする必要があります。メッセージとエラーをトレースして、BLOBストレージを自分で試してください。スティーブマルクスはここにこれの良い例を持っていますhttp://blog.smarx.com/posts/printf-here-in-the-cloud

彼が記事で指摘しているように、これは本番用ではなく、問題を見つけるのに役立つだけです。

于 2013-03-25T17:41:00.303 に答える