2017-05-11 2 views
0

WebアプリケーションがAzure(IAAS)のVMにインストールされています。VMでAzureTableTraceListenerまたはAzureBlobTraceListenerを使用できますか?

は、私はそのようなアズールに書き込みます以下

  • AzureDriveTraceListener
  • AzureTableTraceListener
  • AzureBlobTraceListener

や他のリスナーの一つとして、Azureの診断リスナーの1つ使用することはできAzureのポータルを使用してアクセスできるAzureのテーブルストレージまたはその他のストレージ 接続文字列をどのように設定できますか?

答えて

1

Microsoft.WindowsAzure.WebSites.Diagnosticsを逆コンパイルした後、コードを追加して接続文字列を直接設定できないことがわかりました。

このパッケージは、Webアプリケーションサービスに使用されます。 Webアプリケーションの診断ログを有効にすると、アプリサービスは自動的にいくつかの環境変数を追加します。 Microsoft.WindowsAzure.WebSites.Diagnosticsは、これらの変数を読み取り、空白のストレージに接続し、メッセージをファイルに記録します。

このライブラリを使用してエラーをトレースする場合は、すべての環境変数をWebサービスとして設定することをお勧めします。しかし、これはあまりにも複雑です。

これは回避策ですが、エラーメッセージをNLogなどの紺碧のストレージに記録するために、いくつかのログエラーパッケージを使用することをお勧めします。それにはextension for azure table storageが含まれています。ここで

は、あなたがそれがEnvironmentVariableを使用して設定を読んで見つけることができる、Microsoft.WindowsAzure.WebSites.Diagnosticsにおけるいくつかのソースコードです:

BaseTraceListener:

protected string GetConfigFile() 
     { 
      string environmentVariable = Environment.GetEnvironmentVariable("DIAGNOSTICS_LOGGINGSETTINGSFILE"); 
      string environmentVariable2 = Environment.GetEnvironmentVariable("HOME"); 
      if (environmentVariable == null) 
      { 
       return Path.GetFullPath(Path.Combine(environmentVariable2, "site\\diagnostics\\settings.json")); 
      } 
      if (Path.IsPathRooted(environmentVariable)) 
      { 
       return environmentVariable; 
      } 
      return Path.GetFullPath(Path.Combine(environmentVariable2, "site", "wwwroot", environmentVariable)); 
     } 

AzureblobTrancelistener:

protected override void RefreshConfig() 
     { 
      try 
      { 
       Config config = base.ReadConfigFile(); 
       base.Enabled = config.AzureBlobEnabled; 
       base.TraceLevel = config.AzureBlobTraceLevel; 
      } 
      catch (Exception innerException) 
      { 
       base.Enabled = false; 
       base.LogException(new ApplicationException(string.Format(Resources.TraceListenerIsDisabledByInvalidConfig, base.GetType().Name), innerException)); 
      } 
      if (base.Enabled) 
      { 
       try 
       { 
        string environmentVariable = Environment.GetEnvironmentVariable("DIAGNOSTICS_AZUREBLOBCONTAINERSASURL"); 
        if (string.IsNullOrWhiteSpace(environmentVariable)) 
        { 
         throw new InvalidOperationException(string.Format(Resources.CloudStorageSasUrlNotSpecified, "DIAGNOSTICS_AZUREBLOBCONTAINERSASURL")); 
        } 
        this.blobContainer = new CloudBlobContainer(new Uri(environmentVariable)); 
       } 
       catch (Exception innerException2) 
       { 
        base.Enabled = false; 
        this.blobContainer = null; 
        base.LogException(new ApplicationException(string.Format(Resources.TraceListenerIsDisabled, base.GetType().Name), innerException2)); 
       } 
      } 
     } 
関連する問題