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를 사용하여 설정을 읽을 찾을 수