2017-05-11 11 views
0

웹 응용 프로그램을 Azure (IAAS)의 VM에 설치했습니다.VM에서 AzureTableTraceListener 또는 AzureBlobTraceListener를 사용할 수 있습니까?

나는 같은 푸른 쓸 것이다 다음

  • AzureDriveTraceListener
  • AzureTableTraceListener
  • AzureBlobTraceListener

이나 다른 청취자의 하나로서, 애저 진단 청취자 중 하나를 사용할 수 있습니다 테이블 저장소 또는 Azure의 다른 저장소, Azure Portal을 사용하여 액세스 할 수 있습니까? 어떻게 연결 문자열을 구성 할 수 있습니까?

답변

1

Microsoft.WindowsAzure.WebSites.Diagnostics를 디 컴파일 한 후 일부 코드를 추가하여 연결 문자열을 직접 설정할 수 없음을 알았습니다.

이 패키지는 웹 응용 프로그램 서비스에 사용됩니다. 웹 앱 진단 로그를 사용하도록 설정하면 앱 서비스가 일부 환경 변수를 자동으로 추가합니다. Microsoft.WindowsAzure.WebSites.Diagnostics는 azure 저장소에 연결하고 메시지를 파일에 기록하기 위해 이러한 변수를 읽습니다.

그래서이 라이브러리를 사용하여 오류를 추적하려면 모든 환경 변수를 웹 서비스로 설정할 수 있습니다. 그러나 이것은 너무 복잡합니다.

해결 방법은 다음과 같습니다. NLog 또는 기타 다른 일부 오류 로그 패키지를 사용하여 푸른 색 저장소에 오류를 기록 할 수 있습니다. 여기에는 extension for azure table storage이 포함되어 있습니다.

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)); 
       } 
      } 
     } 
다음

가 Microsoft.WindowsAzure.WebSites.Diagnostics의 일부 소스 코드, 당신은되는 EnvironmentVariable를 사용하여 설정을 읽을 찾을 수